apache-spark - 使用 Spark 读取 SAS sas7bdat 数据
问题描述
我有一个 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)...
有任何想法吗?
解决方案
看起来包没有正确导入。您必须--packages saurfang:spark-sas7bdat:2.0.0-s_2.10
在运行时使用spark-submit
或pyspark
. 见:https ://spark-packages.org/package/saurfang/spark-sas7bdat
您还可以从该页面下载 JAR 文件,然后运行 pyspark 或 spark-submit 命令--jars /path/to/jar
推荐阅读
- python - 如何从
元素“id”
- python - 如何在 Python 中对 netCDF 变量进行切片和循环?
- python - 在带有 unittest 的自动化 Selenium 测试中使用多个 WebSocket 客户端
- android - 输入经过的时间(一些对话框?)
- postgresql - PGAdmin4:无法阻止浏览器打开 - archlinux
- c# - Visual Studio 安装程序项目不运行安装程序类
- wix - 在 Visual Studio 2017 中设置项目
- react-native - 在 React Native 中插入数据时如何自动刷新 FlatList?
- spring-cloud - Sleuth 1.3 > 2.0 互操作性
- java - 如何在没有密码编码的情况下使用 Spring 安全性?