【问题标题】:Write PySpark dataframe to BigQuery "Numeric" datatype将 PySpark 数据帧写入 BigQuery \"Numeric\" 数据类型
【发布时间】:2022-11-07 19:55:32
【问题描述】:

为简单起见,我在 BigQuery 中有一个表,其中一个字段为“数字”类型。当我尝试将包含一列的 PySpark 数据框写入 BigQuery 时,它会不断提高空指针异常.我尝试将 pyspark 列转换为整数,漂浮,细绳, 乃至编码它,但它继续抛出空指针异常.即使花费了 5 到 6 个小时,我自己或在互联网上也无法弄清楚这里的问题是什么,以及将其映射到 BigQuery Numeric 列类型的确切 pyspark 数据框列类型应该是什么。任何帮助或方向都会有很大帮助。提前致谢。

【问题讨论】:

    标签: google-cloud-platform pyspark google-bigquery apache-spark-sql pyspark-schema


    【解决方案1】:

    对于面临相同问题的任何人,您只需将该列转换为十进制类型。

    from pyspark.sql.types import DecimalType
    
    subscriber_df_deu.withColumn('column', col('column').cast(DecimalType()))
    

    【讨论】:

      【解决方案2】:

      这是由于 spark 数据帧的范围。它只能容纳 10 位数字。 为了纠正这个问题,请将数字转换为 Long 数据类型。

      IntegerType: Represents 4-byte signed integer numbers. The range of numbers is from 
      -2147483648 to 2147483647.
      

      https://spark.apache.org/docs/latest/sql-ref-datatypes.html

      希望这可以帮助。

      【讨论】:

        猜你喜欢
        • 2020-10-06
        • 2018-06-24
        • 2020-11-26
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-10
        • 1970-01-01
        相关资源
        最近更新 更多