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

zxlwwiss  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(249)

我正在尝试使用pyspark代码从aws emr上的dynamodb创建一个外部配置单元表。当我在配置单元提示符下执行查询时,它可以正常工作,但当我将其作为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'

我们需要设置任何权限或角色才能使此工作正常吗?有人找到解决这个错误的办法了吗?
谢谢

qaxu7uf2

qaxu7uf21#

spark sql似乎不支持这一点:
https://issues.apache.org/jira/browse/spark-19661
你必须:
运行命令以使用 hive 使用类似架构将从写入spark中的不同配置单元表
在hive中运行一个命令,将spark生成的数据写入dynamodb支持的外部表
有关更多详细信息,请参见对类似问题的回答:
如何将pysparkDataframe写入dynamodb表?

相关问题