В этом ответе показано, как создать фрейм данных PySpark с createDataFrame
, create_df
и toDF
.
df = spark.createDataFrame([("joe", 34), ("luisa", 22)], ["first_name", "age"])
df.show()
+----------+---+
|first_name|age|
+----------+---+
| joe| 34|
| luisa| 22|
+----------+---+
Вы также можете передать createDataFrame
RDD и схему для создания DataFrames с большей точностью:
from pyspark.sql import Row
from pyspark.sql.types import *
rdd = spark.sparkContext.parallelize([
Row(name='Allie', age=2),
Row(name='Sara', age=33),
Row(name='Grace', age=31)])
schema = schema = StructType([
StructField("name", StringType(), True),
StructField("age", IntegerType(), False)])
df = spark.createDataFrame(rdd, schema)
df.show()
+-----+---+
| name|age|
+-----+---+
|Allie| 2|
| Sara| 33|
|Grace| 31|
+-----+---+
create_df
из моего проекта Quinn позволяет использовать лучшее из обоих миров - он краткий и полностью описательный:
from pyspark.sql.types import *
from quinn.extensions import *
df = spark.create_df(
[("jose", "a"), ("li", "b"), ("sam", "c")],
[("name", StringType(), True), ("blah", StringType(), True)]
)
df.show()
+----+----+
|name|blah|
+----+----+
|jose| a|
| li| b|
| sam| c|
+----+----+
toDF
не дает никаких преимуществ перед другими подходами:
from pyspark.sql import Row
rdd = spark.sparkContext.parallelize([
Row(name='Allie', age=2),
Row(name='Sara', age=33),
Row(name='Grace', age=31)])
df = rdd.toDF()
df.show()
+-----+---+
| name|age|
+-----+---+
|Allie| 2|
| Sara| 33|
|Grace| 31|
+-----+---+
person
Powers
schedule
24.02.2021
row_in=[(1566429545575348, 40.353977,-111.701859)]
- person pault   schedule 17.09.2019(1)
- это целое число, а не кортеж. когда у вас есть только 1 элемент, вам нужно добавить кому, чтобы создать кортеж(1,)
- person Steven   schedule 02.11.2020