Mam plik dziennika w systemie plików HDFS, wartości są rozdzielane przecinkami. Na przykład:Ładowanie gałęzi w podzielonej na partycje tabeli
2012-10-11 12:00,opened_browser,userid111,deviceid222
Teraz chcę, aby załadować ten plik do ula stołowego, które kolumny „timestamp”, „działanie” i podzielono przez „id_uzytkownika”, „DeviceID”. W jaki sposób mogę poprosić Hive, aby zabrał 2 ostatnie kolumny w pliku dziennika jako partycję dla tabeli? Wszystkie przykłady e.g. "hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');"
wymagają definicji partycji w skrypcie, ale chcę, aby partycje były konfigurowane automatycznie z pliku HDFS.
Jedynym rozwiązaniem jest utworzenie pośredniej niepartycjonowanej tabeli z wszystkimi czterema kolumnami, wypełnienie jej z pliku, a następnie utworzenie INSERT into first_table PARTITION (userid,deviceid) select from intermediate_table timestamp,action,userid,deviceid;
, ale to jest i dodatkowe zadanie, a będziemy mieć 2 bardzo podobne tabele .. Lub powinniśmy stworzyć zewnętrzny stół jako pośredni.
Dzięki, Denny. W ten sposób rozwiązałem ten problem - za pomocą zewnętrznej tabeli wskazującej na plik surowy, a następnie dane z niego wstawiono do podzielonej na partycje tabeli z wybranymi partycjami. Jest to jedyne proste rozwiązanie takiego przypadku. –
Fajne rzeczy - cieszę się, że się udało, co ?! –
Tak, to jest magia :) Rozwiązałem go w tym samym czasie, kiedy dodałeś swój komentarz :) Może możesz mi pomóc z innym problemem? http://stackoverflow.com/questions/13240409/hadoop-eof-exception-after-map-step –