无法将 Spark 与 Eclipse 中的 Hortonworks Sandbox 连接

Posted

技术标签:

【中文标题】无法将 Spark 与 Eclipse 中的 Hortonworks Sandbox 连接【英文标题】:Can't Connect Spark with Hortonworks Sandbox from eclipse 【发布时间】:2020-05-30 20:45:42 【问题描述】:

我无法连接我在 eclipse 上编写的 spark 代码。

下面是代码,请指导我如何做同样的事情。 任何事情都会有帮助

> 
>     import java.util.Arrays;
> 
>     import org.apache.spark.SparkConf;
>     import org.apache.spark.api.java.JavaPairRDD;
>     import org.apache.spark.api.java.JavaRDD;
>     import org.apache.spark.api.java.JavaSparkContext;
> 
>      public class SparkTest 
> 
        public static void main(String[] args) 

>          SparkConf conf = new SparkConf()
              .setAppName("JD Word Counter").setMaster("local");

> 
>          JavaSparkContext sc = new JavaSparkContext(conf);
>               //hdfs://localhost:8020/user/root/textfile/test.txt         
           JavaRDD<String> inputFile = sc.textFile("hdfs://localhost:8020/user/root/textfile/test.txt");

>          System.out.println("Hello start");
>          System.out.println(inputFile.collect());         
           JavaRDD<String> wordsFromFile = inputFile.flatMap(content ->
            Arrays.asList(content.split(" ")).iterator());

>          System.out.println("hello end");
>       
> 
>          //JavaPairRDD countData = wordsFromFile.mapToPair(t -> new Tuple2(t, 1)).reduceByKey((x, y) -> (int) x + (int) y);
          //wordsFromFile
           .saveAsTextFile("hdfs://localhost:8020/user/root/fileTest/");

> 
>          System.out.println(" This java program is complete");    

       
> 
>     
>

错误:

> I/O error constructing remote block reader.
> org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout
> while waiting for  channel to be ready for connect. ch :
> java.nio.channels.SocketChannel[connection-pending 
> remote=/172.18.0.2:50010] at org.apache.hadoop.net.NetUtils.c

【问题讨论】:

【参考方案1】:

将 hdp 沙箱的 localhost 更改为 ip address 或将 hdfs-site.xml 文件放入您的类路径并确保所有端口都已打开并可从外部机器访问。

【讨论】:

我尝试将 localhost 更改为 IP 地址,但在这种情况下不起作用。我尝试从本地终端 ping HDFS 端口,但也不起作用。奇怪的是 "wordsFromFile.saveAsTextFile("hdfs://localhost:8020/user/root/fileTest/" 这个命令在 HDFS 中创建了一个目录,这意味着 localhost 是可访问的,但是我无法 "JavaRDD inputFile = sc.textFile("hdfs://localhost:8020/user/root/textfile/test.txt")" 读取纺织品中的内容。这怎么可能?

以上是关于无法将 Spark 与 Eclipse 中的 Hortonworks Sandbox 连接的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 Unix Shell 终端中的 Spark 查看在配置单元中创建的表

pyspark 无法启动

无法使用 SSO 钱包将 Oracle 与 Apache Spark 连接

无法将 Spark ML 库中的 Vector 用于 DataFrame

pycharm连接虚拟机中的spark

无法将变量传递给 pyspark 中的 spark sql 查询