我正在尝试通过Spark在Hive和DynamoDB之间建立连接。 为此,我需要执行以下代码:
sparkSession.sql("create external table test (id string) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES('dynamodb.table.name'='testdb','dynamodb.column.mapping'='id:id')")
但是我有一个错误:
ParseException: u"\nOperation not allowed: STORED BY(line 1, pos 111)
我在某处读到Spark不支持STORED BY
。有其他替代方法吗?总是不支持吗?谢谢
答案 0 :(得分:1)
以下是Spark Docs的摘录:
请注意,创建时尚不支持Hive存储处理程序 表,您可以在Hive端使用存储处理程序创建表,然后 使用Spark SQL读取它。
如您所见,Spark无法创建Hive的StorageHandler
表,但可以读取已经存在的表。
解决方案可能是直接在Hive中创建表定义(使用 beeline , hive 或您喜欢的任何其他JDBC客户端),您仍然可以在任何启用了Hive的Spark(即spark.sql("select * from test")
)中读取表。