Не могу написать в локальный Hive, используя JDBC - PullRequest
0 голосов
/ 05 мая 2018

Я использую небольшой кластер Amazon EMR и хочу записать в его базу данных Hive удаленное соединение через JDBC. Я сталкиваюсь с ошибкой, которая также появляется, если я выполняю все локально в этом кластере EMR, поэтому я считаю, что причиной является не удаленное соединение, а что-то непосредственно в EMR.

Ошибка появляется при запуске этого минимального примера:

connectionProperties = {
  "user" : "aengelhardt",
  "password" : "doot",
  "driver" : "org.apache.hive.jdbc.HiveDriver"
}
from pyspark.sql import DataFrame, Row
test_df = sqlContext.createDataFrame([
  Row(name=1)
])
test_df.write.jdbc(url= "jdbc:hive2://127.0.0.1:10000", table = "test_df", properties=connectionProperties, mode="overwrite")

Затем я получаю много сообщений об ошибках Java, но я думаю, что важными являются следующие строки:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/spark/python/pyspark/sql/readwriter.py", line 940, in jdbc
    self.mode(mode)._jwrite.jdbc(url, table, jprop)
  File "/usr/lib/spark/python/lib/py4j-0.10.6-src.zip/py4j/java_gateway.py", line 1160, in __call__
  File "/usr/lib/spark/python/pyspark/sql/utils.py", line 63, in deco
    return f(*a, **kw)
  File "/usr/lib/spark/python/lib/py4j-0.10.6-src.zip/py4j/protocol.py", line 320, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o351.jdbc.
: org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: ParseException line 1:23 cannot recognize input near '"name"' 'BIGINT' ')' in column name or primary key or foreign key

Последняя строка намекает на то, что что-то возникло при создании таблицы, поскольку он пытается указать столбец «name» как «BIGINT».

Я нашел этот вопрос , который имеет аналогичную проблему, и проблема заключалась в том, что SQL-запрос был задан неправильно. Но здесь я не указываю запрос, поэтому не знаю, где это произошло и как это исправить.

На данный момент я понятия не имею, как нырнуть глубже, чтобы найти причину этого. У кого-нибудь есть решение или идея, как искать причину дальше?

...