【问题标题】:How to write twitter tweets to HDFS using Spark Streaming Java API如何使用 Spark Streaming Java API 将 Twitter 推文写入 HDFS
【发布时间】:2015-12-10 16:03:51
【问题描述】:
SparkConf conf = new SparkConf().setMaster("local[2]").setAppName("SparkTwitterHelloWorldExample");
JavaStreamingContext jssc = new JavaStreamingContext(conf, new Duration(60000));
System.setProperty("twitter4j.oauth.consumerKey", consumerKey);
System.setProperty("twitter4j.oauth.consumerSecret", consumerSecret);
System.setProperty("twitter4j.oauth.accessToken", accessToken);
System.setProperty("twitter4j.oauth.accessTokenSecret", accessTokenSecret);
String[] filters = new String[] {"Narendra Modi"};
JavaReceiverInputDStream<Status> twitterStream = TwitterUtils.createStream(jssc,filters);

// Without filter: Output text of all tweets
JavaDStream<String> statuses = twitterStream.map(
        new Function<Status, String>() {
            public String call(Status status) { return status.getText(); }
        }
);
statuses.print();
statuses.saveAsHadoopFiles("hdfs://HadoopSystem-150s:8020/Spark_Twitter_out","txt");

我能够获取 Twitter 推文,但在写入 HDFS 时出错。

有人可以帮助我使用 Java 将推文保存到 HDFS

这是我得到的错误:

[ERROR] 未能执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (默认编译)项目 SparkTwitterHelloWorldExample: 编译失败 [错误] /home/Hadoop/Mani/SparkTwitterHelloWorldExample-master/src/main/java/de/michaelgoettsche/SparkTwitterHelloWorldExample.java:[58,17] 找不到符号 [ERROR] 符号:方法 saveAsHadoopFiles(java.lang.String,java.lang.String) [错误] 位置: 班级 org.apache.spark.streaming.api.java.JavaDStream

【问题讨论】:

  • 请帮助我使用火花流将推文保存到 HDFS

标签: java hadoop twitter apache-spark spark-streaming


【解决方案1】:

您需要使用saveAsTextFile() 方法。 Hadoop 输出格式仅适用于 JavaPairDStream(它需要 key 和 value)。

解决办法是:

statuses.dstream().saveAsTextFiles(prefix, suffix);

【讨论】:

  • 谢谢 vanekjar,使用 statuses.dstream().saveAsTextFiles("hdfs://HadoopSystem-150s:8020/hadoop_Twitter/tweets","txt");我正在写入 HDFS 文件夹,这里每条推文都附加了时间和写作。即
  • hadoop fs -ls /hadoop_Twitter/tweets-1442932338000.txt -rw-r--r-- 1 hadoop supergroup 85 2015-09-22 20:02 /hadoop_Twitter/tweets-1442932338000.txt/ part-00000 和 hadoop_Twitter/tweets-1442932338000.txt/part-00001 等。有没有办法写入单个文件
  • 我不确定是否要从 Spark Streaming 附加一个文件。但是您可以使用FileUtil.copyMerge() 将给定目录中的所有文件合并为单个文件。
  • 嘿,它也适用于本地文件系统吗?我正在尝试做同样的事情,但它不写作......你能帮忙吗?
猜你喜欢
  • 1970-01-01
  • 2015-09-19
  • 2018-11-03
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 2015-12-18
  • 2013-05-29
  • 2011-08-22
相关资源
最近更新 更多