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

将spark数据帧保存为配置单元表时出现问题

怀宇
2023-03-14

我有两个Spark的数据帧。其中一个是使用HiveContext从配置单元表接收的:

spark_df1 = hc.sql("select * from testdb.titanic_pure_data_test")    
lines = sc.textFile("hdfs://HDFS-1/home/testdb/1500000_Sales_Records.csv").map(lambda line: line.split(","))    

spark_df_test = lines.toDF(['Region','Country','Item_Type','Sales_Channel','Order_Priority','Order_Date','Order_ID','Ship_Date','Units_Sold','Unit_Price','Unit_Cost','Total_Revenue','Total_Cost','Total_Profit'])`

spark_df1.write.mode(“overwrite”).format(“orc”).saveastable(“testdb.new_res5”)

第一个数据帧保存时没有出现问题,但当我尝试以同样的方式保存第二个数据帧(spark_df_test)时,我得到了这个错误

文件“/home/jup-user/testdb/scripts/caching.py”,第90行,spark_df_test.write.mode(“overwrite”).format(“orc”).saveAsTable(“testdb.new_res5”)文件“/data_disk/opt/cloudera/parcels/cdh-5.15.1-1.cdh5.15.1.p0.4/lib/spark/python/lib/pyspark.zip/pyspark/SQL/readwriter.py如果表名有圆点(.)在其中,请用反勾(`)引号表名。;‘

共有1个答案

喻选
2023-03-14

问题是您试图用不同的数据帧覆盖同一个配置单元表。现在在Spark不能这么做。

原因是下面的代码。这可以确保表是否存在以引发异常。理想的方法是将数据帧保存在一个新表中

spark_df_test.write.mode(“overwrite”).format(“orc”).saveastable(“testdb.new_res6”)

spark_df_test.write.mode(“overwrite”).saveastable(“temp_table”)

然后可以覆盖目标表中的行

val tempTable = sqlContext.table("temp_table") 
tempTable
       .write
       .mode("overwrite").insertInto("testdb.new_res5")
 类似资料:
  • 当前原始数据位于配置单元上。我想连接几个分区的TB配置单元表,然后以拼花格式将结果输出为分区配置单元表。 我正在考虑将配置单元表的所有分区作为Spark数据帧加载。然后加入、分组等。这是正确的方式吗? 最后,我需要保存数据,我们可以将Spark dataframe保存为拼花格式的动态分区配置单元表吗?如何处理元数据?

  • 我刚刚开始学习SpringMVC。我试图将一些数据从Thymeleaf表单保存到存储库,这扩展了CrudRepository。不幸的是,数据没有显示。 当我进入结果页面时,我看到使用的ID,但没有键入要形成的数据。哪里出了错? 这是控制器 `型号: 存储库: 表格摘录: 并从结果模板中提取:

  • 编辑:使用工作,不知道它是如何工作的

  • 我试图从Spark Sql将数据插入到Hive外部表中。我通过以下命令创建了hive外部表 在spark工作中,我编写了以下代码Dataset df=session。read()。选项(“标题”、“真”)。csv(csvInput); 每次运行这段代码时,我都会遇到以下异常

  • states是按国家分区的,所以当我对上面的数据集进行计数时,查询会扫描所有分区。但是如果我这样读的话- 分区被正确修剪。有人能解释为什么当您将表映射到case类时会丢失分区信息吗?

  • 我设置了一个AWS EMR集群,其中包括Spark 2.3.2、hive 2.3.3和hbase 1.4.7。如何配置Spark以访问hive表? 我采取了以下步骤,但结果是错误消息: Java语言lang.ClassNotFoundException:java。lang.NoClassDefFoundError:org/apache/tez/dag/api/SessionNotRunning使用