如何使pyspark进程成为hdfs文件

iovurdzv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(295)

我最近在ubuntu18lts上安装了一个单节点hadoop集群,还安装了pyspark(以及anaconda)。已验证安装正常。但是,我无法让pyspark处理hdfs中的文件。

  1. hduser@master:~$ hdfs dfs -ls /user/local/hadoop_data/hdfs/hduser/
  2. Found 1 items
  3. -rw-r--r-- 1 hduser supergroup 1979173 2018-08-07 23:01 /user/local/hadoop_data/hdfs/hduser/test.data

在python代码中,我将hdfs文件引用为:

  1. lines = sc.textFile("hdfs:///user/local/hadoop_data/hdfs/hduser/test.data")

脚本是:

  1. hduser@master:~$ cat count_ratings.py
  2. from pyspark import SparkConf, SparkContext
  3. import collections
  4. conf = SparkConf().setMaster("local").setAppName("RatingsHistogram")
  5. sc = SparkContext(conf = conf)
  6. lines = sc.textFile("hdfs:///user/local/hadoop_data/hdfs/hduser/test.data")
  7. ratings = lines.map(lambda x: x.split()[2])
  8. result = ratings.countByValue()
  9. ... ...

我执行脚本为:

  1. hduser@master:~$ spark-submit count_ratings.py

不幸的是,我得到了一个错误:

  1. 2018-08-08 00:02:14 INFO SparkContext:54 - Created broadcast 0 from textFile at NativeMethodAccessorImpl.java:0
  2. Traceback (most recent call last):
  3. File "/home/hduser/count_ratings.py", line 9, in <module>
  4. result = ratings.countByValue()
  5. File "/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py", line 1279, in countByValue
  6. ... ..

我很确定错误在于我在hdfs中引用文件时使用的语法,因为在本地(home dir)上引用相同的数据副本时,相同的脚本会成功运行。有人能指出用pyspark引用hdfs文件的语法吗?感谢您的帮助。。
谢谢。。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题