Chcę, aby pliki wyjściowe miały format 2012117-part-r-00000. Zasadniczo chcę, aby plik wyjściowy miał dołączoną do niego datę, dzięki czemu mogę uporządkować pliki według daty. Spojrzałem na OutputFormat i FileOutputFormat, ale to nie pomaga mojej sprawie.jak nadać niestandardową nazwę plikom wyjściowym hadoopu
Odpowiedz
Właśnie się dowiedziałem nowego API, mogę wykorzystać org.apache.hadoop.mapreduce.lib.output.MultipleOutputs i metodzie addNamedOutput()
W nazwie pliku wyjściowego zlecenia MR nie ma zbyt dużej elastyczności. Użyj podklas z MultipleOutputFormat.
Należy zaimplementować metodę MultipleOutputFormat#generateFileNameForKeyValue, zignorować wejścia do tej metody i zwrócić ciąg znaków w wzorze date + -part-r- + mapred.task.partition
. mapred.task.partition jest int, więc musi być odpowiednio dopełniony z zerami.
Czy istnieje łatwy sposób, w jednym z wcześniejszych wydań Chyba mieliśmy możliwość jak FileOutputFormat.setOutputName (JobConf zadanie, nazwa ciągu); Również moja klasa reduktorów już rozszerza Reducer, więc będzie mi zależało na rozszerzeniu kolejnej klasy. – RFT
Nie widzę tego w interfejsie API Hadoop. –
OK, ale jak już wspomniałem, moja klasa reduktorów już rozszerza kolejną klasę, czy mogę dołączyć klasę statyczną i czy ta klasa rozszerzyć MultipleOutputFormat, a następnie wywołać klasę skądś? – RFT
jest możliwa zmiana nazwy plików wyjściowych Sqoop? –