【问题标题】:Python datatypes to pyspark.sql.types auto conversionPython 数据类型到 pyspark.sql.types 的自动转换
【发布时间】:2018-10-15 21:46:52
【问题描述】:

我需要根据列名和数据类型集创建数据框。但数据类型以 str、int、float 等形式给出。但我需要将它们转换为 StructType/StructField 所需的 StringType、IntegerType 等。

我可以创建简单的映射来完成这项工作,但我想知道这些类型是否有任何自动转换?

【问题讨论】:

  • 你能提供一个reproducible example吗?可能有一种更简单的方法,但如果不确切了解您要做什么,就很难判断。
  • 下面是示例,但我有字段名称并在 python 中输入,即 str 和 int。 schema = StructType([ StructField("city", StringType(), True), StructField("country", StringType(), True), StructField("population", IntegerType(), True)])

标签: pyspark pyspark-sql


【解决方案1】:

我知道它已经很久了,但您可以尝试以下方法:

from pyspark.sql.types import _parse_datatype_string

那么你可以如下使用它:

_parse_datatype_string('int') # Will convert it to IntegerType of pyspark

注意:类型必须是字符串格式

参考:https://spark.apache.org/docs/2.4.0/api/python/_modules/pyspark/sql/types.html

【讨论】:

    【解决方案2】:

    您可以使用以下函数来做到这一点:

    >>> from pyspark.sql.types import _infer_type
    >>> _infer_type([1.0, 2.0])
    ArrayType(DoubleType,true)
    

    如果您直接在输入中输入类型,您也可以这样做:

    >>> my_type = type(42)
    >>> _infer_type(my_type())
    LongType
    

    最后,如果你只有一个描述python类型的字符串,你可以使用这个:

    >>> from pydoc import locate
    >>> _infer_type(locate('int'))
    LongType
    

    来源:

    【讨论】:

      猜你喜欢
      • 2019-04-13
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 2017-02-03
      • 2020-06-30
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多