将 dynamodb 表复制到 hive 的 pyspark 代码问题:不允许操作

2024-03-08

我正在尝试使用 pyspark 代码从 aws emr 上的 Dynamodb 创建外部配置单元表。当我在 hive 提示符下执行查询时,该查询工作正常,但当我将其作为 pyspark 作业执行时,该查询会失败。代码如下:

from pyspark import SparkContext
from pyspark.sql import SparkSession
import os

spark = SparkSession.builder.enableHiveSupport().getOrCreate()
spark.sql('use ash_data')

spark.sql(
    """
    CREATE EXTERNAL TABLE dummyTable
        (item MAP<STRING, STRING>)
    STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
    TBLPROPERTIES ("dynamodb.table.name" = "testdynamodb")
    """
)

它一直给我以下错误:

pyspark.sql.utils.ParseException: u'\nOperation not allowed: STORED BY(line 4, pos 4)\n\n== SQL ==\n\n    CREATE EXTERNAL TABLE dummyTable\n        (item MAP<STRING, STRING>)\n    STORED BY \'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler\'\n----^^^\n    TBLPROPERTIES ("dynamodb.table.name" = "testdynamodb")\n    \n'

我们是否需要设置任何权限或角色才能完成这项工作?有没有人找到这个错误的解决方案?

Thanks


Spark SQL 似乎不支持:

https://issues.apache.org/jira/browse/SPARK-19661 https://issues.apache.org/jira/browse/SPARK-19661

你必须:

  • 运行命令来创建表hive
  • 写入 Spark 中具有相似架构的不同 Hive 表
  • 在 hive 中运行命令将 Spark 生成的数据写入 dynamodb 支持的外部表

有关更多详细信息,请参阅类似问题的答案:

如何将 PySpark 数据帧写入 DynamoDB 表? https://stackoverflow.com/questions/53044026/how-to-write-pyspark-dataframe-to-dynamodb-table/53053506

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 dynamodb 表复制到 hive 的 pyspark 代码问题:不允许操作 的相关文章

随机推荐