Python 脚踝。除此之外,列迭代和sql语句只会给总体执行增加几毫秒main.schema是有用的,但是您仍然需要迭代,并且不足以进行更复杂的操作,而这种方法支持不同类型的字段操作。您提到的这两毫秒是任意的。在一个系统中可能是几毫秒,在另一个系统中可能是几个小时,因

Python 脚踝。除此之外,列迭代和sql语句只会给总体执行增加几毫秒main.schema是有用的,但是您仍然需要迭代,并且不足以进行更复杂的操作,而这种方法支持不同类型的字段操作。您提到的这两毫秒是任意的。在一个系统中可能是几毫秒,在另一个系统中可能是几个小时,因,python,pyspark,apache-spark-sql,pyspark-sql,Python,Pyspark,Apache Spark Sql,Pyspark Sql,脚踝。除此之外,列迭代和sql语句只会给总体执行增加几毫秒main.schema是有用的,但是您仍然需要迭代,并且不足以进行更复杂的操作,而这种方法支持不同类型的字段操作。您提到的这两毫秒是任意的。在一个系统中可能是几毫秒,在另一个系统中可能是几个小时,因此对于这样的决策,性能是决定性的。表达式spark.sql(“select MAIN_COL.*from table_name”)。列将强制重新评估表table_name,以便调用createOrReplaceTempView,并在spark内


脚踝。除此之外,列迭代和sql语句只会给总体执行增加几毫秒
main.schema
是有用的,但是您仍然需要迭代,并且不足以进行更复杂的操作,而这种方法支持不同类型的字段操作。您提到的这两毫秒是任意的。在一个系统中可能是几毫秒,在另一个系统中可能是几个小时,因此对于这样的决策,性能是决定性的。表达式
spark.sql(“select MAIN_COL.*from table_name”)。列
将强制重新评估表
table_name
,以便调用
createOrReplaceTempView
,并在spark内存中再次传输所有数据。这构成了不必要的开销,您可以轻松避免。如下图所示,不需要复杂的迭代,事实上只要一次就足够了。这将增加程序的额外开销。你是1。创建新的临时表2。使用spark.sql(…)3执行select查询。最后遍历列。仅修改列和更改其名称不需要所有这些步骤。您可以直接通过
main.schema
实现,正如您刚才提到的。我认为您可以通过最后一点实现同样的效果,因为在
main.schema
中,您已经拥有了所有必要的数据。它应该是“createOrReplaceTempView”,谢谢。除此之外,列迭代和sql语句只会给总体执行增加几毫秒
main.schema
是有用的,但是您仍然需要迭代,并且不足以进行更复杂的操作,而这种方法支持不同类型的字段操作。您提到的这两毫秒是任意的。在一个系统中可能是几毫秒,在另一个系统中可能是几个小时,因此对于这样的决策,性能是决定性的。表达式
spark.sql(“select MAIN_COL.*from table_name”)。列
将强制重新评估表
table_name
,以便调用
createOrReplaceTempView
,并在spark内存中再次传输所有数据。这构成了不必要的开销,您可以轻松避免。如下所示,不需要复杂的迭代,事实上只要一次就足够了。
root
 |-- MAIN_COL: struct (nullable = true)
 |    |-- a: string (nullable = true)
 |    |-- b: string (nullable = true)
 |    |-- c: string (nullable = true)
 |    |-- d: string (nullable = true)
 |    |-- f: long (nullable = true)
 |    |-- g: long (nullable = true)
 |    |-- h: long (nullable = true)
 |    |-- j: long (nullable = true)
spark.sql("select MAIN_COL.* from table_name")
 # Generate a pandas DataFrame
import pandas as pd
a_dict={
    'a':[1,2,3,4,5],
    'b':[1,2,3,4,5],
    'c':[1,2,3,4,5],
    'e':list('abcde'),
    'f':list('abcde'),
    'g':list('abcde')
}
pandas_df=pd.DataFrame(a_dict)
# Create a Spark DataFrame from a pandas DataFrame using Arrow
spark.conf.set("spark.sql.execution.arrow.enabled", "true")
df = spark.createDataFrame(pandas_df)

#struct
from pyspark.sql.functions import struct
main=df.select(struct(df.columns).alias("MAIN_COL"))
val schema2 = new StructType()
    .add("pre_a",StringType)
    .add("pre_b",StringType)
    .add("pre_c",StringType) 
df.select(col("MAIN_COL").cast(schema2)).show()
main.createOrReplaceTempView("table_name")

new_cols_select = ", ".join(["MAIN_COL." + col + " as pre_" + col for col in spark.sql("select MAIN_COL.* from table_name").columns])

new_df = spark.sql(f"select {new_cols_select} from table_name")