如何在spark中的空数据框中插入值
How to insert value in empty data frame in spark
我正在使用 SPARK sql 开发一个 spark 应用程序,我的工作之一是从两个 table 中选择值并将其插入一个空的 table 中,这就是我的结果。但是为此我正在尝试使用 spark 创建一个空的 table ,我创建了一个空的数据框但无法将其注册为 table 这是我现在的情况代码
from pyspark import SQLContext
from pyspark.sql.types import StructType,StructField,StringType,DateType,IntegerType
sqlc=SQLContext(sc)
schema= StructType([StructField("Name",StringType(),False),StructField("AGE",IntegerType(),False),StructField("DATE",DateType(),False)])
dataframe=sqlc.createDataFrame([],schema)
dataframe.show()
它正在显示一个数据框,但我不确定它是否已注册,因为没有值
dataframe.registerTempTable("Exp")
experiment=sqlc.sql("SELECT * FROM Exp")
experiment.show()
我想我在这里犯了错误,所以对于这个问题我想插入一些测试值,但我无法做到。我是 spark 的新手,所以不确定如何解决这种情况。我浏览了一些论坛,我看到一些论坛用户提到了用于创建 table 的 parallelize() 方法,但我没有正确理解它是如何 works.Is 强制使用配置单元上下文进行操作的?我的要求是在没有配置单元上下文的情况下完成这项工作。请指导我
简答:你不知道。
Spark 数据帧建立在 RDD 之上,即 immutable。这在开始时有点难以适应,但您可以使用它。
您可以通过 运行 对现有 DataFrame 进行一些转换(例如,在您的 spark-sql 中使用 SQL 语句),通过读取一些输入数据或使用 sqlContext.createDataFrame(...).
手动输入数据
是否有任何特殊原因导致您不能只用结果创建一个新的 DataFrame 并在需要时将其注册为 table?
编辑: 我不确定我是否理解你的问题......也许我提出的事情正是你想要做的。在那种情况下:
df = sqlContext.createDataFrame([("val1","val2","val1")], ["colName1", "colName2", "colName3"])
parallelize() method for creating table but i did not properly understand how it works.
简而言之 - parallize 方法采用输入序列,并从中创建输入拆分。
for this issue i want to insert some value for testing
您要么需要并行化 Dataframe Row 对象的列表,要么创建一个文件,然后在该
上映射一个 SQL 模式
my job is selecting value from two tables
那就从这里开始吧。针对两个 table 编写一个 SELECT 语句,它 returns 一个新的 table,您可以注册并写入数据库/磁盘
我正在使用 SPARK sql 开发一个 spark 应用程序,我的工作之一是从两个 table 中选择值并将其插入一个空的 table 中,这就是我的结果。但是为此我正在尝试使用 spark 创建一个空的 table ,我创建了一个空的数据框但无法将其注册为 table 这是我现在的情况代码
from pyspark import SQLContext
from pyspark.sql.types import StructType,StructField,StringType,DateType,IntegerType
sqlc=SQLContext(sc)
schema= StructType([StructField("Name",StringType(),False),StructField("AGE",IntegerType(),False),StructField("DATE",DateType(),False)])
dataframe=sqlc.createDataFrame([],schema)
dataframe.show()
它正在显示一个数据框,但我不确定它是否已注册,因为没有值
dataframe.registerTempTable("Exp")
experiment=sqlc.sql("SELECT * FROM Exp")
experiment.show()
我想我在这里犯了错误,所以对于这个问题我想插入一些测试值,但我无法做到。我是 spark 的新手,所以不确定如何解决这种情况。我浏览了一些论坛,我看到一些论坛用户提到了用于创建 table 的 parallelize() 方法,但我没有正确理解它是如何 works.Is 强制使用配置单元上下文进行操作的?我的要求是在没有配置单元上下文的情况下完成这项工作。请指导我
简答:你不知道。
Spark 数据帧建立在 RDD 之上,即 immutable。这在开始时有点难以适应,但您可以使用它。
您可以通过 运行 对现有 DataFrame 进行一些转换(例如,在您的 spark-sql 中使用 SQL 语句),通过读取一些输入数据或使用 sqlContext.createDataFrame(...).
手动输入数据是否有任何特殊原因导致您不能只用结果创建一个新的 DataFrame 并在需要时将其注册为 table?
编辑: 我不确定我是否理解你的问题......也许我提出的事情正是你想要做的。在那种情况下:
df = sqlContext.createDataFrame([("val1","val2","val1")], ["colName1", "colName2", "colName3"])
parallelize() method for creating table but i did not properly understand how it works.
简而言之 - parallize 方法采用输入序列,并从中创建输入拆分。
for this issue i want to insert some value for testing
您要么需要并行化 Dataframe Row 对象的列表,要么创建一个文件,然后在该
上映射一个 SQL 模式my job is selecting value from two tables
那就从这里开始吧。针对两个 table 编写一个 SELECT 语句,它 returns 一个新的 table,您可以注册并写入数据库/磁盘