【问题标题】:Reading data from HDFS on a cluster从集群上的 HDFS 读取数据
【发布时间】:2016-08-09 02:59:32
【问题描述】:

我正在尝试使用 Jupiter Notebook 从 AWS EC2 集群上的 HDFS 读取数据。它有 7 个节点。我正在使用 HDP 2.4,我的代码如下。该表有数百万行,但代码不返回任何行。“ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com”是服务器(ambari-server)。

from pyspark.sql import SQLContext
sqlContext = HiveContext(sc)
demography = sqlContext.read.load("hdfs://ec2-xx-xx-xxx-xx.compute-1.amazonaws.com:8020/tmp/FAERS/demography_2012q4_2016q1_duplicates_removed.csv", format="com.databricks.spark.csv", header="true", inferSchema="true")
demography.printSchema()
demography.cache()
print demography.count()  

但是使用 sc.textFile,我得到了正确的行数

 data = sc.textFile("hdfs://ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com:8020/tmp/FAERS/demography_2012q4_2016q1_duplicates_removed.csv")
schema= data.map(lambda x: x.split(",")).first()  #get schema
header = data.first()                          # extract header
data=data.filter(lambda x:x !=header)          # filter out header

data= data.map(lambda x: x.split(","))
data.count()
3641865

【问题讨论】:

  • 我不确定这个问题需要 jupyter 标签。您可以在 spark shell 中运行相同的代码。
  • 哦,还有 PS,你应该 1) 不提供集群的实际地址 2) 你真的应该更改默认登录;)
  • 谢谢。实际上,这发生在我从 Jupiter 复制代码时。
  • 你可以sc.textFile文件吗?也许你只是没有将它正确加载到 sqlContext 中
  • 再次感谢。我检查了它,它给出了正确的行数。数据 = sc.textFile("hdfs://ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com:8020/tmp/FAERS/demography_2012q4_2016q1_duplicates_removed.csv") 架构= data.map(lambda x: x .split(",")).first() #get schema header = data.first() # extract header data=data.filter(lambda x:x !=header) # filter out header data= data.map(lambda x: x.split(",")) data.count() 3641865

标签: apache-spark hdfs pyspark


【解决方案1】:

Indrajit 给出的答案here 解决了我的问题。问题出在 spark-csv jar 上。

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多