Нужно решение по подключению Teradata с помощью Pyspark - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть код ниже, который будет использоваться для соединения enoop hadoop с Teradata.

sc = spark.sparkContext
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.format("jdbc").options(url="jdbc:teradata://teradata-dns-sysa.fg.rbc.com",driver="com.teradata.jdbc.TeraDriver",dbtable="table",user="userid",password="xxxxxxxx").load()

Теперь ИД пользователя и пароль различны для разных пользователей.Поэтому ищите решение, в котором учетные данные могут храниться в файле в безопасном месте, а код просто ссылается на данные (идентификатор пользователя и пароль) в файле

1 Ответ

0 голосов
/ 05 февраля 2019

Здесь вы можете использовать файл свойств, где вы можете хранить требуемый идентификатор пользователя и пароль в файле.Вы можете ссылаться на файл свойств, используя параметр аргумента - имя файла-файла свойств в команде при выполнении команды spark-submit.Ниже приведен пример кода для того же.

from pyspark.sql import SparkSession

spark = SparkSession.builder \
        .appName("Teradata Connect") \
        .getOrCreate()

sc = spark.sparkContext

DB_DRIVER = sc._conf.get('spark.DB_DRIVER')

JDBC_URL = sc._conf.get('spark.JDBC_URL')

DB_USER = sc._conf.get('spark.DB_USER')

DB_PASS = sc._conf.get('spark.DB_PASS')

jdbcDF = (spark.read.format("jdbc").option("driver", DB_DRIVER)
   .option("url", JDBC_URL)
   .option("dbtable", "sql_query")
   .option("user", DB_USER)
   .option("password", DB_PASS)
   .load())

jdbcDF.show(10)

Пример файла свойств

spark.DB_DRIVER com.teradata.jdbc.TeraDriver

spark.JDBC_URL jdbc: teradata: //teradata-dns-sysa.fg.rbc.com

spark.DB_USER ID пользователя

пароль spark.DB_PASS

Команда отправки Spark

spark2-submit --master yarn \
              --deploy-mode cluster \
              --properties-file $CONF_FILE \
                pyspark_script.py
...