不使用sqoop在hdfs中加载oracle数据

unguejic  于 2021-06-03  发布在  Sqoop
关注(0)|答案(2)|浏览(484)

我想将数据从oracle数据库导入hadoop hdfs,并考虑使用sqoop。当我尝试时,我发现oracle和hadoop的数据连接器断开了。 2019-07-18 09:19:58,203 [uber-SubtaskRunner] INFO org.apache.sqoop.manager.oracle.OraOopManagerFactory - Data Connector for Oracle and Hadoop is disabled. 我联系了系统管理员,他告诉我,我们的sqoop目前没有为oracle数据库配置,也不会配置。相反,他们建议使用下面的pyspark脚本。
我在我们的cdsw上使用了上面提到的脚本,它在我的端部的一些配置中运行得非常好。

import os
import netrc
from pyspark.sql import SparkSession

'''Set up the pyspark dependencies: In order to connect to the Oracle DB 
via JDBC we are going to need the jar provided by Oracle'''
ORACLE_JAR = "ojdbc7.jar"

JAR_LOC = os.path.join(os.environ["JARS_DIR"], ORACLE_JAR)

# Create a SparkSession

spark = SparkSession.builder \
    .appName("My Sample App") \
    .config("spark.jars", "local://" + JAR_LOC) \
    .getOrCreate()

# Set the Exadata host to which you are connecting to

db_host = "exadata.host.address"

# Read the values from the .netrc

user, account, password = netrc.netrc().authenticators(db_host)

# Check the Spark version and other config information

spark.sparkContext.getConf().getAll()
driver = "oracle.jdbc.OracleDriver"

# The SID of your database

sid = "mydb.sid.tns"
url = "/".join(["jdbc:oracle:thin:@/", db_host +":1521", sid])

# The query that you need to run

dbtable = "(select * from table)"

jdbc_df = spark.read.format("jdbc").option("url", url) \
                                   .option("driver", driver) \
                                   .option("dbtable", dbtable) \
                                   .option("user", user) \
                                   .option("password", password).load()

我的问题是:与sqoop或flume相比,使用pyspark脚本的相对优势/劣势是什么?

35g0bw71

35g0bw711#

sqoop是一种数据摄取工具,它使用mapreduce技术,spark是一种著名的大数据处理工具,它以内存执行和dag智能取代mapreduce,比磁盘计算快10倍。
谢谢,阿米特

gdx19jrr

gdx19jrr2#

使用sparkjdbc从关系数据库读取数据要比sqoop快得多。以下是一些好处。
您可以将所有读取、转换和写入操作组合到一个脚本/程序中,而不是在一个脚本中通过sqoop单独读取,然后在另一个脚本中执行转换和写入。
如果希望以适当的方式对数据进行分区,可以动态地定义一个新的拆分列(使用ora\u hash之类的函数)。
您可以控制与数据库的连接数。增加连接的数量肯定会加快数据导入的速度。

相关问题