当前位置: 首页 > 知识库问答 >
问题:

在群集模式下读取文本文件时发生异常

长孙和悦
2023-03-14
SparkContext sc = new SparkContext("spark://master.com:7077","Spark-Phoenix");
JavaSparkContext jsc = new JavaSparkContext(sc);

JavaRDD<String> trs_testing = jsc.textFile("hdfs://master.com:9000/Table/sample");


//using iterator
Iterator<String> iStr= trs_testing.toLocalIterator();

while(iStr.hasNext()){ //here I am getting exception    
    System.out.println("itr next : " + iStr.next());        
}   

//using foreach()
trs_testing.foreach(new VoidFunction<String>() {//here I am getting exception
        private static final long serialVersionUID = 1L;

        @Override public void call(String line) throws Exception {
            System.out.println(line);       
        }           
});

//using collect()
for(String line:trs_testing.collect()){//here I am getting exception 
    System.out.println(line);
}

//using foreachPartition()
trs_testing.foreachPartition(new VoidFunction<Iterator<String>>() {//here I am getting exception 
        private static final long serialVersionUID = 1L;

        @Override public void call(Iterator<String> arg0) throws Exception {          
            while (arg0.hasNext()) {            
                String line = arg0.next();
                System.out.println(line);
            }
    }
});

共有1个答案

李意致
2023-03-14

当您在本地系统/独立模式下运行Spark作业时,所有数据都将在同一台机器中,因此您将能够迭代和打印数据。

当Spark作业在集群模式/环境上运行时,数据将被分割成片段并分发到集群中的所有计算机(RDD-弹性分布式数据集)。因此,要以这种方式打印,必须使用foreach()函数。

试试看:

trs_testing.foreach(new VoidFunction<String>(){ 
          public void call(String line) {
              System.out.println(line);
          }
});
 类似资料:
  • 所以我使用了DataInputStream、FileInputStream、BufferInputStream、FileReader、BufferedReader、Scanner。它们都抛出FileNOtFoundException或CorruptedStreamException。

  • 我在本地模式和集群模式下都使用apache storm 1.1.0。对于喷口,我正在阅读Kafka主题中的数据(我使用的是Kafka2.11-0.8.2.1)。当我在本地模式下使用storm时,Spout会读取kafka主题中的数据,并且也会发出数据,但当我在集群模式下运行storm时,Spout不会发出任何数据。 知道为什么topology spout在集群模式下不发射任何数据吗?如有任何帮助,

  • 我正在使用yarn-cluster Master运行我的spark应用程序。 应用程序是做什么的? 外部服务根据对RESTService的HTTP请求生成jsonFile Spark需要在解析JSON后读取该文件并执行一些工作 我认为将文件作为--files传递会让我忘记保存和删除这个文件。类似于通过-过程-忘记。 那么,如何读取通过-files传递的文件呢?唯一的解决方案是手工创建路径,硬编码“

  • 问题内容: 我目前有一个程序可以在单线程模式下读取文件(非常大)并创建搜索索引,但是在单线程环境下建立索引的时间太长。 现在,我正在尝试使其在多线程模式下工作,但不确定实现该目标的最佳方法。 我的主程序创建一个缓冲的读取器,并将实例传递给线程,并且线程使用缓冲的读取器实例读取文件。 我认为这并不符合预期,而是每个线程一次又一次地读取同一行。 有没有一种方法可以使线程仅读取其他线程未读取的行?我需要

  • 抛出错误 到目前为止,我在Hadoop中只有start-dfs.sh,在Spark中并没有真正配置任何内容。我是否需要使用YARN集群管理器来运行Spark,以便Spark和Hadoop使用相同的集群管理器,从而可以访问HDFS文件? 我尝试按照tutorialspoint https://www.tutorialspoint.com/Hadoop/hadoop_enviornment_setup

  • 问题内容: 现在,我正在使用Pyinstaller。我有一个脚本,可以从img文件夹中获取图像。 我生成.exe的脚本是 问题是仅生成.exe文件,但整个文件夹/ img被忽略。 问题:为了自动获取.exe文件+ / img文件夹,我需要在上一行中添加哪种附加语法? 更新12/18/2013 我的意思是:执行pyinstaller.py脚本并包含所有参数后,我必须在/ dist文件夹中看到:.ex