从 sql server 读取数据并在 PySpark 中使用特殊字符传递我的密码

Posted

技术标签:

【中文标题】从 sql server 读取数据并在 PySpark 中使用特殊字符传递我的密码【英文标题】:Reading data from sql server and passing my password with special char in PySpark 【发布时间】:2020-03-21 17:45:31 【问题描述】:

我正在尝试使用 PySpark 从 sql server 读取一个表,并且我正在使用特殊字符传递我的密码,它在我的密码中抛出一个错误

from pyspark.sql import SparkSession
Spark = SparkSession.builder.appName("readdata").config("spark.driver.extraClassPath","/home/user/sqljdbc42.jar").enableHiveSupport().getOrCreate()
jdbcDF = Spark.read.format("jdbc") \
 .option("url","jdbc:sqlserver://SVKSVP1234\SVLSQL908:1451\host;databaseName=NLX") \
    .option("dbtable", "customers") \
    .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \
    .option("user", "admin") \
    .option("password", "admin@123") \
    .load()
jdbcDF.show()

我收到了错误 文件“filesystem.py”,第 8 行,在 .option("密码", "admin@123")

我尝试了 r"admin@123" 但它对我不起作用 我得到的错误 文件“filesystem.py”,第 21 行,在 .option("密码", "admin@123") \ 文件“/opt/cloudera/parcels/SPARK2-2.4.0.cloudera1-1.cdh5.13.3.p0.1007356/lib/spark2/python/lib/pyspark.zip/pyspark/sql/readwriter.py”,第 172 行, 在负载 文件“/opt/cloudera/parcels/SPARK2-2.4.0.cloudera1-1.cdh5.13.3.p0.1007356/lib/spark2/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py ",第 1257 行,在调用中 文件“/opt/cloudera/parcels/SPARK2-2.4.0.cloudera1-1.cdh5.13.3.p0.1007356/lib/spark2/python/lib/pyspark.zip/pyspark/sql/utils.py”,第 63 行, 在装饰 文件“/opt/cloudera/parcels/SPARK2-2.4.0.cloudera1-1.cdh5.13.3.p0.1007356/lib/spark2/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py ",第 328 行,在 get_return_value 中

【问题讨论】:

【参考方案1】:
server_name = "<ServerName>"
database_name = "<DatabaseName>"
port = 1433
properties =
    "user": "<user>",
    "password": "<password>"

url = "jdbc:sqlserver://:;database=".format(server_name, port, database_name)

spark.read.jdbc(url=url, table="dbo.tablename", properties=properties)

【讨论】:

以上是关于从 sql server 读取数据并在 PySpark 中使用特殊字符传递我的密码的主要内容,如果未能解决你的问题,请参考以下文章

如何从视图中复制数据并在 sql server 数据库中创建新表? [复制]

从 sql server 读取数据时检测到自引用循环

从 SQL Server 2008 R2 检索多语言数据(中文、日文...)并在 Java webapp 中显示

如何处理SQL Server事务复制中的大事务操作

Spark steaming 从 Kafka 读取并在 Java 中应用 Spark SQL 聚合

使用 Sql Server 从 C# 中的读取器读取数据