Napisałem moje niestandardowe źródło danych/ujście dla mojej aplikacji do przesyłania strumieniowego Spark i próbuję zainicjować ją z pliku metics.properties - ale to nie działa z executorami. Nie mam kontroli nad maszynami w klastrze Spark, więc nie mogę skopiować pliku właściwości w katalogu $ SPARK_HOME/conf/w klastrze. Mam go w słoiku, w którym działa moja aplikacja, ale do czasu, gdy mój słoik zostanie pobrany na węzły robocze w klastrze, programy wykonawcze są już uruchomione, a ich system metryk został już zainicjowany - w ten sposób nie pobieram pliku z niestandardową konfiguracją źródła w nim .Niestandardowe konfiguracje źródła/zlewu nie są rozpoznawane
następstwie tego post, mam określony „spark.files = metrics.properties” i „spark.metrics.conf = metrics.properties” ale do czasu „metrics.properties” dostarczany jest do wykonawców, ich system metryczny jest już zainicjowany.
Jeśli zainicjuję mój własny system metryk, to pobiera on mój plik, ale brakuje mi danych/właściwości poziomu/egzaminu na poziomie głównym/wykonawczym (np. Executor.sink.mySink.propName = myProp - nie można odczytać "propName" z "mySink"), ponieważ są one initialized według systemu metrycznego Sparka.
Czy istnieje (programowy) sposób dostarczenia "metryki.properties" przed wykonawcami initialize ich systemu metryk?
Update1: Próbuję to na samodzielne Spark 2.0.0 klaster
Update2: Myśl hacki na osiągnięcie tego celu - przed rozpoczęciem pracy „rzeczywistą” iskra, rozpocząć pracę atrapę do skopiowania metrics.properties na każdego pracownika. Następnie rozpocznij swoją obecną pracę od znanej lokalizacji pliku. Wady - jeśli pracownik umiera, a inny pracownik zajmie miejsce, nie będzie miał tego pliku w znanej ścieżce. Rozwiązanie alternatywne - po uruchomieniu nowego komputera pracującego, pobiera metits.properties z twojego git-repo i umieszcza je w znanej ścieżce. Chociaż może działać, jest strasznie hacky, a preferowanym rozwiązaniem jest, aby Spark wspierał go wewnętrznie.
Próbowałem tego. 2 problemy - 1) Nie kopiuje "metryki.properties" na maszynę sterownika - skoro ma kopiować pliki tylko w katalogu wykonawczym executorów. 2) Do czasu skopiowania tych plików na executorach system metryk próbowałby zainicjować i się nie udało - z powodu braku plików. –