2017-06-03 61 views
2

我的Apache火花和Apache火花流编程的初学者, 我被配置为在Azure数据湖到Apache火花使用Hadoop的连接器 link其正确连接并 我可以通过使用火花上下文wholeTextFiles,和JavaStreamingContext textFileStream不Apache中火花簇工作

hadoop的终端本身访问ADL数据FS -ls ADL://xxxxx.azuredatalakestore.net

的文件名表示其列表中包含的目录ectory, 但我需要相同的列表从程序本身来获得我想这样的

SparkConf conf = new SparkConf().setAppName("ADL Application");  
JavaSparkContext jsc = new JavaSparkContext(conf); 
@SuppressWarnings("resource") 
JavaStreamingContext jcntxt=new JavaStreamingContext(jsc,Durations.seconds(1));  
JavaDStream<String> javaDStream = jcntxt.textFileStream("adl://xxxxx.azuredatalakestore.net/directory"); 
JavaEsSparkStreaming.saveJsonToEs(javaDStream, "modwebservice/docs"); 
jcntxt.start(); 
jcntxt.awaitTermination(); 

但它没有显示任何列表我在“wholeTextFiles” 而不是“textFileStream”也,但它不工作审判,而不是目录,如果我使用它的文件名正常工作,我也可以获取数据。

JavaSparkContext jsc = new JavaSparkContext(conf);  
@SuppressWarnings("resource") 
JavaStreamingContext jcntxt=new JavaStreamingContext(jsc,Durations.seconds(1)); 
JavaRDD<String> javaRDD6 = jsc.textFile(args[0],1); 
Queue<JavaRDD<String>> microbatches = new LinkedList<JavaRDD<String>>(); 
microbatches.add(javaRDD6); 
JavaDStream<String> javaDStream = jcntxt.queueStream(microbatches);  
JavaEsSparkStreaming.saveJsonToEs(javaDStream, args[1]); 
jcntxt.start(); 
jcntxt.awaitTermination(); 

,并按照我的知识的Apache火花只在本地 存储和HDFS文件的存放位置只工作可能是, 我不知道怎么去湛蓝的湖水数据目录包含 我试过2路文件列表但它不工作 如果有谁知道,请分享链接,谢谢。

回答

1

尝试使用下面的代码在Java中通过JavaSparkContext类的wholeTextFiles方法列出对HDFS与数据存储湖的所有文件(也使用相同的方法SparkContext)。

JavaSparkContext jsc = new JavaSparkContext(); 
String path = "adl://xxxxx.azuredatalakestore.net"; 
JavaPairRDD<String, String> jprdd = jsc.wholeTextFiles(String path); 
for(Tuple2<String, String> tuple: jprdd.collect()) { // Tuple2: <FileName, Content> 
    System.out.println(tuple._1()); 
} 

希望它有帮助。

+0

谢谢@Peter,我试过JavaPairRDD也是 但是这行“JavaEsSparkStreaming.saveJsonToEs(javaDStream,args [1]);”我得到错误 由于不受支持的保存格式可能是我不知道100%是否它的正确与否,如果你不介意你能指导我如何在适当的文件保存format.Thank你。 –