无法从spark shell为twitter数据在配置单元中创建表

5anewei6  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(337)

我在hdfs路径中存储了twitter数据。我可以用spark dataframe读取数据:

val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)

val df= hiveContext.read.json("/nifi/data/twitter/")
``` `df.printSchema` 以及 `df.show` 命令显示结果,没有任何问题。
但是,当我尝试将Dataframe存储到配置单元表时,我面临以下错误:

df.write.saveAsTable("tweets_32")

org.apache.hadoop.ipc.remoteexception(org.apache.hadoop.hdfs.server.namenode.leaseexpiredexception):no lease-on/apps/hive/warehouse/tweets\ u 32/\ u temporary/0/\ u temporary/attempt\ u 201809260508\ u 0002\ m\ u000002\ u 0/part-r-00002-c204b592-dc2a-4b2f-bc39-54afb237a6cb.gz.parquet(inode 1173647):文件不存在[租赁。持有人:dfsclient\u nonmapreduce\u 14557453\u 1,pendingcreates:1]>
有人能告诉我,这是什么原因吗?
nmpmafwu

nmpmafwu1#

此错误的含义:另一个程序已处理并删除此tmp文件。检查,确保没有其他任务与您的任务并行运行。另一个原因-你的任务可能很慢。hadoop不尝试诊断和修复运行缓慢的任务,而是尝试检测它们并为它们运行备份任务。您可以尝试通过关闭spark和hadoop的推测来修复它:

sparkConf.set("spark.speculation", "false");
sparkConf.set("spark.hadoop.mapreduce.map.speculative", "false");
sparkConf.set("spark.hadoop.mapreduce.reduce.speculative", "false");

这个问题的讨论有一个线索:在这里输入链接描述

相关问题