当前位置: 首页 > 知识库问答 >
问题:

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

王磊
2023-03-14

我试图使用pyspark代码在aws emr上从Dynamodb创建一个外部hive表。当我在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个答案

乌骏
2023-03-14

Spark SQL似乎不支持这一点:

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

你必须:

  • 运行命令,使用hive

有关更多详细信息,请参见对类似问题的回答:

如何将PySpark数据帧写入DynamoDB表?

 类似资料:
  • 我目前正在使用adwords api,我必须处理1天、7天和30天的数据。因此,spark作业是基本的,加载csv并将其写入带有分区的拼花地板: 现在我面临的问题是,7和30天将在某个时候(通过1天前)处理已经处理过的数据,因此在我的分区上,追加将追加第二个拼花文件到这个分区。 但在这种特定情况下,我希望新的拼花文件覆盖上一个文件(因为adwords csv将在生成的第一天到7/30天后进行更改)

  • 我试图从以下链接执行示例: http://www.cloudera.com/content/cloudera/en/documentation/CDH4/v4-2-0/CDH4-installation-guide/CDH4IG_Topic_19_6.html $hcatjar=$hcat_home/share/hcatalog/hcatalog-core-0.11.0.jar $hcatpigj

  • 问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您

  • 我们遇到了这样一种情况:如果我们有一个全局复制的表,但也使用表流来处理插入/更新事件的记录。 例如,我们在us-east-1和us-west-2之间复制了一个表,其中一个lambda连接到其所在区域的每个表流。在us-east-1表中执行更新时,将使用更新的记录调用us-west-2 lambda。问题是我们不需要处理复制到us-west-2的记录,我们使用的是2019版的dynamodb全局表,

  • 情境:我在不同的Docker容器中设置了Hive、Hue和Hadoop。在同一个Docker网络中。我为每个hadoopnamenode、2个datanode、1个Hue实例、1个Hive服务器和一个Postgres元存储创建了一个容器。我能够在hdfs站点中配置色调代理用户。namenode的xml,可以通过webhdfs浏览文件系统。但对于Hive,我在色调中得到错误: 例如,我可以在配置单元