【问题标题】:`saveAsTextFile` method not working in spark standalone cluster`saveAsTextFile` 方法在 Spark 独立集群中不起作用
【发布时间】:2015-09-17 03:09:19
【问题描述】:

我正在使用一个具有 1 个主节点和 2 个工作节点的 3 节点独立 spark 集群,以及一个 2 节点 cassandra 环,这是我正在尝试做的示例代码

SparkConf conf = new SparkConf(true);
SparkContext sc = new SparkContext(HOST, APP_NAME, conf);

String query = "Select address from " + CASSANDRA_KEYSPACE + "." + CASSANDRA_COLUMN_FAMILY + " where ras_ = '01'";

CassandraSQLContext sqlContext = new CassandraSQLContext(sc);
DataFrame resultsFrame = sqlContext.sql(query);

JavaRDD<Row> resultsRDD = resultsFrame.javaRDD();
JavaRDD<String> dataRDD = resultsRDD.map(row -> row.getString(0));

dataRDD.saveAsTextFile("output");

System.out.println,我知道我有一些作为查询结果的数据,但在我的项目主页中,在output 目录中,我得到的唯一文件是_SUCCESS._SUCCESS.crc 和没有part-* 文件。这是预期的行为吗?如果没有,我哪里错了?

【问题讨论】:

  • 尝试通过最小化示例来找出答案!如果删除 coalesce 会发生什么?如果您使用 sc.parallelize 而不是 Cassandra 查询作为输入会发生什么?
  • 我已编辑并尝试最小化示例,并尝试使用/不使用repartition/coalesce,以及使用collect 将结果收集到列表中并使用并行化它sc.parallelize,仍然没有运气。在我的项目主页中创建了一个名为output 的目录,其中只有_SUCCESS._SUCCESS.crc
  • 我在写入本地文件时遇到了同样的问题。尝试写入 HDFS (dataRDD.saveAsTextFile(hdfs://...)) 或 Cassandra (dataRDD.saveToCassandra)
  • 尝试保存到 hdfs 得到Exception in thread "main" java.io.IOException: Incomplete HDFS URI, no host: hdfs:///user/root/output
  • 我让它使用格式为hdfs://host:9000/output/directory 的 url 与 hdfs 一起工作。谢谢!

标签: java cassandra apache-spark apache-spark-sql spark-cassandra-connector


【解决方案1】:

好吧,看起来我们的情况相同,因为我们都使用多个节点,结果文件不能保证保存在哪个节点上。

在我的情况下,它没有保存在我运行脚本的主服务器上,而是保存在一个从服务器上。

希望有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    相关资源
    最近更新 更多