Java 火花流输出未保存到HDFS文件

Java 火花流输出未保存到HDFS文件,java,hadoop,apache-spark,Java,Hadoop,Apache Spark,我正在尝试将Spark流输出保存到HDFS上的一个文件中。现在,它没有保存任何文件 这是我的密码: StreamingExamples.setStreamingLogLevels(); SparkConf sparkConf = new SparkConf().setAppName("MyTestCOunt"); JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, new Duration(1000)); JavaR

我正在尝试将Spark流输出保存到HDFS上的一个文件中。现在,它没有保存任何文件

这是我的密码:

StreamingExamples.setStreamingLogLevels();

SparkConf sparkConf = new SparkConf().setAppName("MyTestCOunt");
JavaStreamingContext ssc = new JavaStreamingContext(sparkConf,  new Duration(1000));

JavaReceiverInputDStream<String> lines = ssc.socketTextStream(args[0], Integer.parseInt(args[1]), StorageLevels.MEMORY_AND_DISK_SER);
JavaDStream<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
                @Override
                public Iterable<String> call(String x) {
                 return  Lists.newArrayList(SPACE.split(x));
                }
      });

JavaPairDStream<String, Integer> wordCounts = words.mapToPair(
      new PairFunction<String, String, Integer>() {
        @Override
        public Tuple2<String, Integer> call(String s) {
                 return new Tuple2<String, Integer>(s, 1);
        }
      }).reduceByKey(new Function2<Integer, Integer, Integer>() {
        @Override
        public Integer call(Integer i1, Integer i2) {
          return i1 + i2;
        }
  }); 


wordCounts.print();
wordCounts.saveAsHadoopFiles("hdfs://mynamenode:8020/user/spark/mystream/","abc");
ssc.start();
ssc.awaitTermination();
StreamingExamples.setStreamingLogLevels();
SparkConf SparkConf=新的SparkConf().setAppName(“MyTestCOunt”);
JavaStreamingContext ssc=新的JavaStreamingContext(sparkConf,新的持续时间(1000));
JavaReceiveInputdStream lines=ssc.socketTextStream(args[0],Integer.parseInt(args[1]),StorageLevels.MEMORY_和_DISK_SER);
JavaDStream words=lines.flatMap(新的flatMap函数(){
@凌驾
公共Iterable调用(字符串x){
returnlists.newArrayList(SPACE.split(x));
}
});
JavaPairDStream wordCounts=words.mapToPair(
新PairFunction(){
@凌驾
公共元组2调用(字符串s){
返回新的Tuple2(s,1);
}
}).reduceByKey(新功能2(){
@凌驾
公共整数调用(整数i1、整数i2){
返回i1+i2;
}
}); 
wordCounts.print();
wordCounts.saveAsHadoopFiles(“hdfs://mynamenode:8020/user/spark/mystream/“,“abc”);
ssc.start();
ssc.终止();
wordCounts.print()
有效,但不能
wordCounts.saveAsHadoopFiles
,你知道为什么吗

我正在运行以下命令:

1)
nc-lk9999

2)
/bin/run example org.apache.spark.examples.streaming.NetworkWordCount localhost 9999


提前谢谢

我通过将
master
指定为
local[x]x>1
解决了相同的问题。若您以本地方式运行master,则Spark无法分配插槽来执行任务。 像

尝试:

wordCounts.dstream().saveAsTextFiles(“hdfs://mynamenode:8020/user/spark/mystream/“,“abc”)

相反:

wordCounts.saveAsHadoopFiles(“hdfs://mynamenode:8020/user/spark/mystream/“,“abc”)

JavaDStream行
用我们的数据初始化行

`

lines.foreachRDD(新的VoidFunction(){
公共void调用(JavaRDD)引发异常{
今天日期=新日期();
字符串日期=(新的SimpleDataFormat(“dd-MM-yyyy”).format(今天));
saveAsTextFile(输出位置+“/”+日期+“/”;
}});

`

我通过将沙盒/服务器时区更改为我的本地时区来解决这个问题,因为我的Twitter帐户有GMT,沙盒有UTC。我已使用以下命令更改沙盒时区:

ntpdate pool.ntp.org
chkconfig ntpd on
ntpdate pool.ntp.org
/etc/init.d/ntpd start
date

时区更改后,我还没有重新启动Hadoop服务。

您能断言我的编辑没有改变您的意思吗?另外,您是否能够通过spark shell连接到您的群集?嗯,您是否向netcat发送了任何信息?是的,我在nc-lk 9999此命令之后发送了一些数据。如果我禁用此“wordCounts.saveAshadopFiles()”,它将打印数据。我的hadoop版本是“2.3.0-cdh5.0.3”。因此,我使用maven进行编译,在pom中使用以下命令“mvn-Phadoop2-Dhadoop.version=2.3.0-cdh5.0.3-Dyarn.version=2.3.0-cdh5.0.3-DskipTests clean package”,在pom中,我将${protobuf.version}替换为2.5.0,现在它在HDFS中创建文件,但不显示任何数据
lines.foreachRDD(new VoidFunction<JavaRDD<String>>() {
    public void call(JavaRDD<String > rdd) throws Exception {
    Date today = new Date();
    String date = (new SimpleDateFormat("dd-MM-yyyy").format(today));
    rdd.saveAsTextFile(OUTPUT_LOCATION+"/"+date+"/");
    }});
ntpdate pool.ntp.org
chkconfig ntpd on
ntpdate pool.ntp.org
/etc/init.d/ntpd start
date