apache-spark - 使用 Spark 读取 SAS sas7bdat 数据

标签 apache-spark pyspark sas

我有一个 SAS 表,我尝试使用 Spark 读取它。我尝试使用这个https://github.com/saurfang/spark-sas7bdat喜欢,但我无法让它工作。

这是代码:

from pyspark.sql import SQLContext

sqlContext = SQLContext(sc)
df = sqlContext.read.format("com.github.saurfang.sas.spark").load("my_table.sas7bdat")

它返回此错误:

Py4JJavaError: An error occurred while calling o878.load.
: java.lang.ClassNotFoundException: Failed to find data source: com.github.saurfang.sas.spark. Please find packages at http://spark.apache.org/third-party-projects.html
at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:635)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:190)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
at py4j.Gateway.invoke(Gateway.java:282)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:238)
at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.ClassNotFoundException: com.github.saurfang.sas.spark.DefaultSource
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$23$$anonfun$apply$15.apply(DataSource.scala:618)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$23$$anonfun$apply$15.apply(DataSource.scala:618)
at scala.util.Try$.apply(Try.scala:192)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$23.apply(DataSource.scala:618)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$23.apply(DataSource.scala:618)
at scala.util.Try.orElse(Try.scala:84)
at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:618)...

有什么想法吗?

最佳答案

看起来包没有正确导入。运行 spark-submitpyspark 时,您必须使用 --packages saurfang:spark-sas7bdat:2.0.0-s_2.10。请参阅:https://spark-packages.org/package/saurfang/spark-sas7bdat

您还可以从该页面下载 JAR 文件,并使用 --jars/path/to/jar 运行 pyspark 或 Spark-submit 命令

关于apache-spark - 使用 Spark 读取 SAS sas7bdat 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51949414/

相关文章:

postgresql - 通过连接到远程 PostgreSQL 服务器访问文件系统

SAS:如何计算除某些字符变量之外的所有字符变量的频率

hadoop - Flume流GZ文件

java - 使用 Spark java 从 Alluxio 读取多个文件很慢

apache-spark - 为什么 Spark-Submit 和 Spark-Shell 失败并显示 "Failed to find Spark assembly JAR. You need to build Spark before running this program."?

python - 带有额外参数的 map 分区 pyspark

python-3.x - 是否可以将标量值与 Pandas Series 一起传递给 Pandas UDF 函数

apache-spark - 在PySpark多项式Lo​​gistic回归中设置阈值

java - 如何在不删除配置单元表的情况下基于 DataFrame 从 SparkSQL 更改表,如删除/添加列?

SAS 全局日期显示格式默认