不允许操作:在Spark sql上由Hive存储

时间:2020-03-06 13:14:32

标签: apache-spark hive apache-spark-sql amazon-dynamodb

我正在尝试通过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。有其他替代方法吗?总是不支持吗?谢谢

1 个答案:

答案 0 :(得分:1)

以下是Spark Docs的摘录:

请注意,创建时尚不支持Hive存储处理程序 表,您可以在Hive端使用存储处理程序创建表,然后 使用Spark SQL读取它。

如您所见,Spark无法创建Hive的StorageHandler表,但可以读取已经存在的表。

解决方案可能是直接在Hive中创建表定义(使用 beeline hive 或您喜欢的任何其他JDBC客户端),您仍然可以在任何启用了Hive的Spark(即spark.sql("select * from test"))中读取表。