无法使用JDBC

时间:2018-05-05 07:24:47

标签: apache-spark jdbc hive pyspark emr

我正在运行一个小的Amazon EMR集群,并希望通过JDBC从远程连接写入其Hive数据库。我遇到了一个错误,如果我在该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

最后一行暗示在创建表格时出现了一些问题,因为他试图指定名称&#39;专栏作为&#39; BIGINT&#39;那里。

我发现this question有类似的问题,问题是错误地指定了SQL查询。但是在这里,我没有指定查询,因此我不知道发生了什么或如何修复它。

截至目前,我不知道如何更深入地找到原因。有没有人有解决方案或如何进一步寻找原因的想法?

0 个答案:

没有答案