Мне нужно получить схему из 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
метод типа структуры, но он недоступен для python.
Это расширение упомянутого вопроса, где я уже получил помощь, однако я хотел создать новый поток - Получить загрузку схемы данных в таблицу метаданных
Спасибо за ответ, яобновление полного кода -
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|
+-------+--------+