【发布时间】: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