pyspark 代码将 dynamodb 表复制到配置单元问题:不允许操作

Posted

技术标签:

【中文标题】pyspark 代码将 dynamodb 表复制到配置单元问题:不允许操作【英文标题】:pyspark code to copy dynamodb table to hive issues: Operation not allowed 【发布时间】:2019-05-10 13:32:50 【问题描述】:

我正在尝试使用 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'

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

谢谢

【问题讨论】:

【参考方案1】:

Spark SQL 似乎不支持此功能:

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

你必须:

运行命令以使用hive创建表 从 Spark 中具有相似架构的不同配置单元表写入 在 hive 中运行命令,将 spark 生成的数据写入 dynamodb 支持的外部表中

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

How to write PySpark dataframe to DynamoDB table?

【讨论】:

以上是关于pyspark 代码将 dynamodb 表复制到配置单元问题:不允许操作的主要内容,如果未能解决你的问题,请参考以下文章

如何将大型 Pyspark DataFrame 写入 DynamoDB

aws 胶水 pyspark 删除数组中的结构,但保留数据并保存到 dynamodb

将 JSON 数据从 dynamoDB 复制到 redshift

从 dynamodb 复制到 s3

AWS DataPipeline表示未找到DynamoDB表

将拼花地板转换为json以进行dynamodb导入