【发布时间】:2019-07-02 02:51:49
【问题描述】:
我必须从 csv 文件中获取架构(列名和数据类型)。到目前为止,我已经达到了 -
l = [('Alice', 1)]
Person = Row('name', 'age')
rdd = sc.parallelize(l)
person = rdd.map(lambda r: Person(*r))
df2 = spark.createDataFrame(person)
print(df2.schema)
#StructType(List(StructField(name,StringType,true),StructField(age,LongType,true)))
我想提取值 name 和 age 以及 StringType 和 LongType 但是我没有看到任何关于结构类型的方法。
scala 中有toDDL struct 类型的方法,但同样不适用于python。
这是我已经获得帮助的上述问题的扩展,但是我想创建一个新线程 - Get dataframe schema load to metadata table
感谢回复,我正在更新完整代码-
import pyspark # only run after findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.sql.catalogImplementation", "in-memory") \
.getOrCreate()
from pyspark.sql import Row
l = [('Alice', 1)]
Person = Row('name', 'age')
rdd = sc.parallelize(l)
person = rdd.map(lambda r: Person(*r))
df2 = spark.createDataFrame(person)
df3=df2.dtypes
df1=spark.createDataFrame(df3, ['colname', 'datatype'])
df1.show()
df1.createOrReplaceTempView("test")
spark.sql('''select * from test ''').show()
输出
+-------+--------+
|colname|datatype|
+-------+--------+
| name| string|
| age| bigint|
+-------+--------+
+-------+--------+
|colname|datatype|
+-------+--------+
| name| string|
| age| bigint|
+-------+--------+
【问题讨论】:
-
我对您的最新编辑感到困惑 - 您是否回答了自己的问题?
标签: apache-spark pyspark