Korzystanie z ula lub Beeline klienta, nie mam problemu wykonaniu tej klauzuli:pyhs2/ula żadnych plików pasujących plik ścieżkę i plik istnieje
hive -e "LOAD DATA LOCAL INPATH '/tmp/tmpBKe_Mc' INTO TABLE unit_test_hs2"
Dane z pliku załadowanego powodzeniem do ula.
Jednak podczas korzystania pyhs2 z tej samej maszynie, plik nie zostanie znaleziony:
import pyhs2
conn_str = {'authMechanism':'NOSASL', 'host':'azus',}
conn = pyhs2.connect(conn_str)
with conn.cursor() as cur:
cur.execute("LOAD DATA LOCAL INPATH '/tmp/tmpBKe_Mc' INTO TABLE unit_test_hs2")
Zgłasza wyjątek:
Traceback (most recent call last):
File "data_access/hs2.py", line 38, in write
cur.execute("LOAD DATA LOCAL INPATH '%s' INTO TABLE %s" % (csv_file.name, table_name))
File "/edge/1/anaconda/lib/python2.7/site-packages/pyhs2/cursor.py", line 63, in execute
raise Pyhs2Exception(res.status.errorCode, res.status.errorMessage)
pyhs2.error.Pyhs2Exception: "Error while compiling statement: FAILED: SemanticException Line 1:23 Invalid path ''/tmp/tmpBKe_Mc'': No files matching path file:/tmp/tmpBKe_Mc"
Widziałem podobne pytania pisał o tym problemie, a zwykle odpowiedź jest taka, że kwerenda działa na innym serwerze, który nie ma lokalnego pliku "/ tmp/tmpBKe_Mc" na nim przechowywanego. Jeśli jednak tak jest, dlaczego uruchamiałbym polecenie bezpośrednio z pracy CLI, ale użycie pyhs2 nie zadziałało?
(Drugie pytanie: w jaki sposób mogę pokazać, który serwer próbuje obsłużyć zapytanie? Próbowałem cur.execute ("set"), który zwraca wszystkie parametry konfiguracyjne, ale gdy grepping dla "hosta" zwrócone parametry nie Wygląda na to, że zawiera prawdziwą nazwę hosta.)
Dzięki!
Hi John, mogę wiedzieć, w jaki sposób problem został rozwiązany? –
Niestety - nie używamy już ula, więc nie mogę go przetestować. –