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

问题描述 投票:2回答:1

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

我们需要设置任何权限或角色来完成这项工作吗?有人找到任何解决此错误的方法吗?

谢谢

hive pyspark amazon-dynamodb amazon-emr
1个回答
0
投票
https://issues.apache.org/jira/browse/SPARK-19661

您必须:

运行命令以使用hive创建表

    使用相似的架构从Spark写入不同的配置单元表中
  • 在配置单元中运行命令以将火花生成的数据写入由dynamodb支持的外部表中
  • 请参阅类似问题的答案以获取更多详细信息:
  • How to write PySpark dataframe to DynamoDB table?
  • © www.soinside.com 2019 - 2024. All rights reserved.