apache-spark - 从 sql server 读取数据并在 PySpark 中使用特殊字符传递我的密码
问题描述
我正在尝试使用 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()
我在 .option("password", "admin@123") 中收到错误文件“filesystem.py”,第 8 行
我试过 r"admin@123" 但它对我不起作用
错误我在 .option("password", "admin@123") \ File "/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/协议。py”,第 328 行,在 get_return_value 中
解决方案
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)
推荐阅读
- java - 为什么当内联转换时分配一个它编译的值?
- java - 添加 JPA 注释后的 JAXB IllegalAnnotationExceptions
- python - 了解加密程序中的逻辑/数学所需的建议
- apollo - 通过 SSR 在 getInitialProps 中访问 apolloClient
- python - 更改 Jupyter 笔记本工作目录
- javascript - 以不同的分辨率缩放 d3 图表
- javascript - 如何从点击事件中调用类函数
- php - 使用下拉列表从数据库中删除数据但收到错误消息
- javascript - vue v-for 图像未显示。相反,它显示字符串
- python - 替换 Pandas DataFrame 中的字符