如何在spark sql中更改列的数据类型

xlpyo6sf  于 2023-04-21  发布在  Apache
关注(0)|答案(1)|浏览(499)

我想在spark中将delta表的列的数据类型从bigint改为double。
分析异常:无法更新spark_catalog.default.tablename字段column_name:bigint不能转换为decimal(10,2);第1行位置0;AlterColumn resolvedfieldname(StructField(column_name,LongType,true)),DecimalType(10,2)
ALTER TABLE tablename ALTER COLUMN column_name TYPE decimal(10,2)

mlmc2os5

mlmc2os51#

我在我的环境中复制了同样的代码。我得到了这样的输出:
按照下面的方法,它将更改spark sql中列的数据类型。

方法1
Pyspark

首先直接读取Delta表作为 Dataframe ,使用cast函数更改数据类型。注意my_table1这是我的增量表

%python

from pyspark.sql.functions import col

df= spark.sql("SELECT * FROM my_table1")
df1 = df.withColumn("age", col("age").cast("double"))

方式二:
Spark SQL:

INSERT OVERWRITE TABLE my_table1
SELECT id, name, CAST(age AS DOUBLE) AS age FROM my_table1;

相关问题