【问题标题】:Spark - Have I read from csv correctly?Spark - 我是否正确读取了 csv?
【发布时间】:2019-03-25 23:39:38
【问题描述】:

我使用以下方法将 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","Country Name","Year ","TransactionDate","QTR","客户编号","客户名称","客户城市","单据类型代码","订单号","产品代码","产品描述","销售计量单位" ,"Sub Franchise Code","Sub Franchise Description","Product Major Code","Product Major Description","Product Minor Code","Product Minor Description","Invoice Number","Invoice DateTime","Class Of Trade ID","Class Of Trade","Region","AmountCurrencyType","Extended Cost","Gross Trade Sales","Net Trade Sales","Total(Ext Std Cost)","AdjustmentType","ExcludeComment ", "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)

【问题讨论】:

    标签: apache-spark pyspark databricks


    【解决方案1】:

    是的,这是正常的行为。数据框函数show() 具有显示20 行的默认值。您可以为此设置不同的值(但请记住,打印文件的所有行没有意义)并阻止它被截断。例如:

    df.show(100, truncate=False)
    

    【讨论】:

      【解决方案2】:

      Spark 数据帧显示有限的行和列是正常的。您对数据的读取应该没有问题。但是,要确认您已正确读取 csv,您可以尝试使用

      查看 df 中的行数和列数
      len(df.columns)
      

      df.columns
      

      对于行数

      df.count()
      

      如果您需要查看详细内容,可以使用statedcronoik 选项。

      【讨论】:

        【解决方案3】:

        这是正常行为。您可以通过不同方式查看数据内容:

        show():以格式化方式显示前 20 行。您可以将要显示的行数指定为参数(如果您提供的值远高于您的数据可以!)。作为默认配置,列也会被截断。您可以指定truncate=False 以显示所有列。 (就像@cronoik 在他的回答中正确所说的那样)。

        head():与show() 相同,但它以“行”格式打印日期。不提供格式良好的表格,它有助于快速完整地查看数据,例如 head(1) 仅显示第一行。

        describe().show():您可以显示摘要,让您深入了解数据。例如,显示元素的数量,每列的最小/最大/平均值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-14
          • 2014-07-19
          • 2021-09-25
          • 2017-06-03
          • 1970-01-01
          相关资源
          最近更新 更多