Создать датафрейм на принтсхема вывода - PullRequest
0 голосов
/ 22 мая 2019

Я создал фрейм данных поверх файла паркета и теперь могу видеть схему фрейма данных. Теперь я хочу создать фрейм данных поверх вывода printschema

df = spark.read.parquet("s3/location")
df.printschema()

вывод выглядит как [(cola, string), (colb, string)] Теперь я хочу создать dataframe на выходе printschema.Что было бы лучшим способом сделать это

Добавление большего количества входных данных о том, что было достигнуто к настоящему времени -

df1 = sqlContext.read.parquet("s3://t1")
df1.printSchema()

Мы получили следующий результат -

root
|-- Atp: string (nullable = true)
|-- Ccetp: string (nullable = true)
|-- Ccref: string (nullable = true)
|-- Ccbbn: string (nullable = true)
|-- Ccsdt: string (nullable = true)
|-- Ccedt: string (nullable = true)
|-- Ccfdt: string (nullable = true)
|-- Ccddt: string (nullable = true)
|-- Ccamt: string (nullable = true)

Мы хотим создать фрейм данных с двумя столбцами - 1) colname, 2) datatype

Но если мы запустим следующий код -

schemaRDD = spark.sparkContext.parallelize([df1.schema.json()])
schema_df = spark.read.json(schemaRDD)

schema_df.show()

Мы получим вывод ниже, где мы получим весьимена столбцов и тип данных в одной строке -

+--------------------+------+
|              fields|  type|
+--------------------+------+
|[[Atp,true,str...|struct|
+--------------------+------+

Поиск вывода, например

Atp| string 
Ccetp| string
Ccref| string
Ccbbn| string
Ccsdt| string
Ccedt| string
Ccfdt| string
Ccddt| string
Ccamt| string

Ответы [ 2 ]

0 голосов
/ 01 июля 2019
schema_df = sqlContext.createDataFrame(zip([col[0] for col in df1.dtypes], [col[1] for col in df1.dtypes]), schema=['colname', 'datatype'])
0 голосов
/ 22 мая 2019

Не уверен, какой язык вы используете, но на pyspark я бы сделал это так:

schemaRDD = spark.sparkContext.parallelize([df.schema.json()])
schema_df = spark.read.json(schemaRDD)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...