Spark SQL:ALTER TABLE CHANGE

时间:2016-01-03 19:00:39

标签: sql apache-spark apache-spark-sql

我想将一些表导入到DB中(目前)不支持大于18的小数精度。所以我在Spark中尝试使用ALTER TABLE来降低精度。它是如何圆润的并不重要。

rt_rel_acc_acc.saveAsTable("rt_rel_acc_acc", SaveMode.Overwrite)
hiveContext.sql("ALTER TABLE rt_rel_acc_acc CHANGE REL001 REL001 decimal(18, 9)")
hiveContext.read.table("rt_rel_acc_acc").write.jdbc(url, "rt_rel_acc_acc", properties)

然而,Spark似乎根本不应用这些更改,因为在第三行引发了异常:

PSQLException: ERROR: invalid numeric size '30,15'

另一方面,ALTER TABLE x RENAME to y立即应用。

任何想法,我的方法有什么问题?

1 个答案:

答案 0 :(得分:1)

您可以在Dataframe中投射任何列。就像下面这样。

public interface RecyclerOnItemClickListener {

    void onItemClickListener(int itemPosition);
}

在这种情况下,您将拥有旧的和新的列名。您可以删除或选择列,然后应用saveAsTable或将其用于其他表。

如果有效,请告诉我。如果我对这个问题的理解是错误的,我很乐意根据您的回答尝试其他解决方案。

谢谢你, 问候, 作者Srini。