我使用以下命令将一个csv文件读取到Spark中
df = spark.read.format(file_type).options(header ='true',quote ='\“', ignoreLeadingWhiteSpace ='true',inferSchema ='true')。load(file_location)
当我尝试使用其他来源的示例CSV数据并进行diplsay(df)时,它显示的标题行整齐,后面紧跟数据。
当我对包含40列和数百万行的主数据进行尝试时,它仅显示前20个列标题,而没有数据行。
这是正常行为还是它读错了?
更新: 我将把这个问题标记为已回答,因为以下提示很有用。但是我的结果是:
df.show(5, truncate=False)
当前显示: + ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------- + | ^“ periodID”,“ DAXDate”,“国家名称”,“年份“,”交易日期“,” QTR“,”客户编号“,”客户名称“,”客户城市“,”文档类型代码“,”订单编号“,”产品代码“,”产品说明“,”销售UOM“ ,“次级专营权代码”,“次级专营权描述”,“产品主要代码”,“产品主要描述”,“产品次要代码”,“产品次要描述”,“发票编号”,“发票日期时间”,“类别交易ID”,“交易类别”,“区域”,“ AmountCurrencyType”,“扩展成本”,“总交易销售额”,“净交易销售额”,“总计(额外标准成本)”,“ AdjustmentType”,“ ExcludeComme” nt”,“ CurrencyCode”,“ fxRate”,“ Quantity”,“ FileName”,“ RecordCount”,“ Product Category”,“ Direct”,“ ProfitCenter”,“ ProfitCenterRegion”,“ ProfitCenterCountry” | + ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------
我将不得不回到基础上,在文本编辑器中预览csv,以确定该文件的正确格式是什么,以找出问题所在。注意,我必须将我的代码更新为以下内容以处理管道除臭器:
df = spark.read.format(file_type).options(header='true', quote='\"', delimiter='|',ignoreLeadingWhiteSpace='true',inferSchema='true').load(file_location)
答案 0 :(得分:3)
是的,这是正常行为。数据框函数show()的默认值是显示20行。您可以为此设置一个不同的值(但请记住,打印文件的所有行都没有意义),还可以阻止其被截断。例如:
df.show(100, truncate=False)
答案 1 :(得分:0)
Spark数据帧显示有限的行和列是正常的。您读取的数据应该没有问题。但是,要确认您已正确阅读csv,可以尝试使用
查看df中的行数和列数len(df.columns)
或
df.columns
关于行数
df.count()
答案 2 :(得分:0)
这是正常行为。您可以通过多种方式查看数据内容:
show()
:以格式化的方式向您显示前20行。您可以指定要显示的行数作为参数(如果您提供的值高出您的数据就可以了!)。作为默认配置,列也将被截断。您可以指定truncate=False
以显示所有列。 (就像@cronoik在回答中正确说了一样。)
head()
:与show()
相同,但是它以“行”格式打印日期。没有提供格式良好的表格,它对于快速完整地查看数据很有用,例如使用head(1)
仅显示第一行。
describe().show()
:您可以显示摘要,以使您深入了解数据。例如,向您显示元素计数,每列的最小值/最大值/平均值。