【问题标题】:Spark context wholeTextFiles ,and JavaStreamingContext textFileStream not working in Apache spark clusterSpark 上下文 wholeTextFiles 和 JavaStreamingContext textFileStream 在 Apache spark 集群中不起作用
【发布时间】:2017-06-03 13:47:34
【问题描述】:

我是 Apache spark 和 Apache spark 流式编程的初学者, 我使用 Hadoop 连接器将 Azure 数据湖配置为 Apache spark link 连接正确且 我可以使用

通过终端本身访问 Adl 数据

hadoop fs -ls adl://xxxxx.azuredatalakestore.net

其显示的文件名列表包含目录, 但我需要相同的列表才能从我尝试过的程序本身获取

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 spark 仅适用于本地 storage 和 hdfs 文件的存储位置可能只是, 我不知道如何获取 azure 数据湖目录包含文件列表 我尝试了两种方法,但它不起作用 有知道的请分享下链接,谢谢。。

【问题讨论】:

    标签: java azure apache-spark spark-streaming azure-data-lake


    【解决方案1】:

    尝试使用 Java 中的以下代码通过 JavaSparkContext 类的 wholeTextFiles 方法列出 HDFS 和 Data Lake Store 上的所有文件(也使用 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());
    }
    

    希望对你有帮助。

    【讨论】:

    • 感谢@Peter,我也尝试了 JavaPairRDD,但这一行“JavaEsSparkStreaming.saveJsonToEs(javaDStream, args[1]);”由于不支持的保存格式,我收到错误可能是我 100% 不知道它是否正确,如果您不介意您能指导我如何以正确的文件保存格式进行操作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 2018-08-23
    相关资源
    最近更新 更多