如何使PySpark处理hdfs文件

时间:2018-08-07 19:06:47

标签: python ubuntu hadoop pyspark hdfs

我最近在 Ubuntu 18-LTS上设置了单节点 Hadoop集群,并且还安装了 pySpark (以及anaconda)。安装已被验证可以正常工作。但是,我无法让pySpark处理hdfs中的文件。

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

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

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

脚本为:

    hduser@master:~$ cat count_ratings.py
    from pyspark import SparkConf, SparkContext
    import collections

    conf = SparkConf().setMaster("local").setAppName("RatingsHistogram")
    sc = SparkContext(conf = conf)

    lines = sc.textFile("hdfs:///user/local/hadoop_data/hdfs/hduser/test.data")
    ratings = lines.map(lambda x: x.split()[2])
    result = ratings.countByValue()
    ... ... 

我以以下方式执行脚本:

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

不幸的是,我得到了错误消息:

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

我相当确定错误在于我用来引用hdfs中文件的语法中,因为当引用本地(home dir)上相同的数据副本时,相同的脚本可以成功运行。任何人都可以指出使用pySpark引用hdfs文件的语法吗?任何帮助表示赞赏。.

谢谢..

0 个答案:

没有答案