首页 > 解决方案 > 不允许操作:Spark sql 上的 hive 存储

问题描述

我正在尝试通过 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)

我读到STORED BY了 Spark 不支持的地方。有没有替代方法?总是不支持吗?谢谢你

标签: apache-sparkhiveapache-spark-sqlamazon-dynamodb

解决方案


以下是Spark Docs的摘录:

需要注意的是,Hive的storage handler在创建表的时候还不支持,你可以在Hive端使用storage handler创建表,然后使用Spark SQL读取。

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

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


推荐阅读