gpt4 book ai didi

oracle - 为什么spark scala JDBC将oracle中的NUMBER(1)转换为spark数据框中的 bool 值

转载 作者:行者123 更新时间:2023-12-05 05:17:43 25 4
gpt4 key购买 nike

下面是我使用 spark scala JDBC 代码连接到 oracle 的程序:

    /usr/hdp/current/spark2-client/bin/spark-shell --driver-memory 5g --executor-memory 5g --jars /usr/hdp/current/sqoop-client/lib/ojdbc7.jar

import org.apache.spark.sql.SQLContext
val sqlcontext = new org.apache.spark.sql.SQLContext(sc)
val dataframe_mysql = sqlcontext.read.format("jdbc").option("url", "jdbc:oracle:thin:@//Host:1521/QAM").option("driver", "oracle.jdbc.driver.OracleDriver").option("dbtable", "(select * from MGPH.APPLICATION where APPLICATION_ID in (11,12))").option("user", "XXXXXXXXXX").option("password", "xxxxxxxxx").option("fetchsize", "100").load()
dataframe_mysql.show()

Spark 输出:

scala> dataframe_mysql.show()
+--------------+-------------------+--------------------+--------------------+-----------+----------+------------------+
|c1|c2| c3| c4|c5|c6|c7|
+--------------+-------------------+--------------------+--------------------+-----------+----------+------------------+
| 11| 1|Safire.Accumulato...|Safire Accumulato...| true| 3346| false|
+--------------+-------------------+--------------------+--------------------+-----------+----------+------------------+

Oracle 表结构:

Name                Null?    Type          
------------------- -------- -------------
c1 NOT NULL NUMBER(3)
c2 NOT NULL NUMBER(2)
c3 NOT NULL VARCHAR2(50)
c4 NOT NULL VARCHAR2(500)
c5 NOT NULL NUMBER(1)
c5 NUMBER(10)
c7 NUMBER(1)

问题:

oracle 中的 c7 列有 NUMBER(1),但 spark JDBC 在导入时将其转换为 boolean 类型。

请指教,如何避免真/假?并在 dataframe 中输出 0/1。

最佳答案

请引用文章:http://www.ericlin.me/2017/05/oracle-number10-field-maps-to-boolean-in-spark/https://github.com/apache/spark/pull/14377 . Spark 的 BooleanType 映射到 oracle 的 NUMBER(1) (因为 boolean 类型在 oracle 中不可用)。因此,在将表读入 Spark 后,您必须处理此问题[通过在 Spark 转换中强制转换或使用 bool 值]。

关于oracle - 为什么spark scala JDBC将oracle中的NUMBER(1)转换为spark数据框中的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48917244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com