apache-spark - 不允许操作: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 不支持的地方。有没有替代方法?总是不支持吗?谢谢你
解决方案
以下是Spark Docs的摘录:
需要注意的是,Hive的storage handler在创建表的时候还不支持,你可以在Hive端使用storage handler创建表,然后使用Spark SQL读取。
如您所见,Spark 无法创建 Hive 的StorageHandler
表,但可以读取已经存在的表。
解决方案可能是直接在 Hive 中创建表定义(使用beeline、hive或您喜欢的任何其他 JDBC 客户端),您仍然可以在任何启用 Hive 的 Spark(即spark.sql("select * from test")
)中读取表。
推荐阅读
- monit - M/Monit 更改/重置管理员密码
- docker - 如何找出卷属于哪个容器?
- python - 是否可以通过 cypari2 使用 Pari 并行化 python 代码?
- python - 如何从 BigQuery 表中提取所有列名的列表?
- r - 计算时间差。R
- python - Python中的平行向量点
- python - python bs4如何在一行中组合多个图像url?
- java - Java 属性或类变量或类字段等中的术语是否正确?非常感谢
- javascript - 在 Jest 单元测试中模拟 imgur API 调用
- java - 消费者消费者 [direct-vm] 在骆驼中已经存在异常