【问题标题】:not able to create a table in hive from spark shell for twitter data无法从 spark shell 在 hive 中为 twitter 数据创建表
【发布时间】:2018-09-26 09:12:17
【问题描述】:

我有 twitter 数据存储在 hdfs 路径中。我可以使用 spark 数据框读取数据:

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

val df= hiveContext.read.json("/nifi/data/twitter/")

df.printSchemadf.show 命令显示结果没有任何问题。

但是当我尝试将数据框存储到配置单元表时,我面临以下错误:

df.write.saveAsTable("tweets_32")

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException): 没有租约 /apps/hive/warehouse/tweets_32/_temporary/0/_temporary/attempt_201809260508_0002_m_000002_0/part-r-00002-c204b592-dc2a-4b2f-bc39-54afb237a6cb.gz.parquet(inode 1173647):文件不存在。 [租。持有者: DFSClient_NONMAPREDUCE_14557453_1,挂起创建:1]>

谁能告诉我,这可能是什么原因?

【问题讨论】:

  • 我不确定错误,但以下是我想到的要点:尝试使用 sparksession 而不是 hivecontext。 Sparksession对象封装了hivecontext & sqlcontext

标签: apache-spark hadoop hive apache-spark-sql


【解决方案1】:

这个错误的含义:另一个程序已经处理并删除了这个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");

这个问题讨论有一个线程: enter link description here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多