【发布时间】:2018-07-26 15:16:50
【问题描述】:
我正在编写一个 spark-jdbc 程序来从 postgres db 读取数据并将相同的数据移动到 HDFS 上的 Hive。 我能够从 postgres 读取数据。在将数据移动到 Hive 之前,我必须在 Hive 上为相同的数据创建模式和表,并且使用我们项目提供的数据类型,这些数据类型类似于 postgres 上的数据类型。 例如:
source datatype Hive datatype
character varying\([0-9]{1,4}\) -> string
bigint -> bigint
integer -> int
smallint -> int
numeric\([0-9]{1,3},0\) -> bigint
numeric\([0-9]{1,3},[1-9][0-9]{0,2}\) -> double
如果源上的列具有数据类型 smallint,则应在 Hive 上将其设为 int。我使用函数'schema'得到了架构
val tbSchema = yearDF.schema
现在 tbSchema 以 org.apache.spark.sql.types.StructType 的形式出现,我不明白如何解析和读取其中的值。
例如,如果 StructType 有:StructType(StructField(id,IntegerType,false), StructField(name,StringType,true), StructField(company,StringType,true))
如何读取它并从集合中提取 columnName 和数据类型,以便我可以使用相同的详细信息来更改数据类型并为 hive 表创建架构?
【问题讨论】:
标签: scala apache-spark hive