我已经使用以下语法从 S3 加载了一个 excel 文件,但我想知道需要在此处设置的选项。
为什么必须设置以下所有选项以加载 excel 文件?这些选项都不是加载其他文件类型(如 csv、del、json、avro 等)所必需的。
val data = sqlContext.read.
format("com.crealytics.spark.excel").
option("location", s3path).
option("useHeader", "true").
option("treatEmptyValuesAsNulls", "true").
option("inferSchema","true").
option("addColorColumns", "true").
load(path)
Run Code Online (Sandbox Code Playgroud)
如果未设置上述任何选项(位置除外),我会收到以下错误:
sqlContext.read.format("com.crealytics.spark.excel").option("location", s3path).load(s3path)
Run Code Online (Sandbox Code Playgroud)
错误信息 :
Name: java.lang.IllegalArgumentException
Message: Parameter "useHeader" is missing in options.
StackTrace: at com.crealytics.spark.excel.DefaultSource.checkParameter(DefaultSource.scala:37)
at com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:19)
at com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:7)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:345)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:149)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:132)
at $anonfun$1.apply(<console>:47)
at $anonfun$1.apply(<console>:47)
at time(<console>:36)
Run Code Online (Sandbox Code Playgroud) 我正在尝试从 PySpark 中的本地路径读取 .xlsx 文件。
我写了下面的代码:
from pyspark.shell import sqlContext
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.master('local') \
.appName('Planning') \
.enableHiveSupport() \
.config('spark.executor.memory', '2g') \
.getOrCreate()
df = sqlContext.read("C:\P_DATA\tyco_93_A.xlsx").show()
Run Code Online (Sandbox Code Playgroud)
错误:
类型错误:“DataFrameReader”对象不可调用
在Scala/Spark
应用程序中我创建了两个不同的 DataFrame。我的任务是为每个 DataFrame 创建一个包含两个工作表的 Excel 文件。
我决定使用Spark-Excel库,但我有点困惑。据我了解,未来的excel文件保存在hdfs文件系统中,对吗?我需要在方法中设置未来excel文件的路径.save()
,对吗?我也不明白应该选择什么格式dataAddress
?
import org.apache.spark.sql.Dataset
import spark.implicits._
val df1 = Seq(
("2019-01-01 00:00:00", "7056589658"),
("2019-02-02 00:00:00", "7778965896")
).toDF("DATE_TIME", "PHONE_NUMBER")
df1.show()
val df2 = Seq(
("2019-01-01 01:00:00", "194.67.45.126"),
("2019-02-02 00:00:00", "102.85.62.100"),
("2019-03-03 03:00:00", "102.85.62.100")
).toDF("DATE_TIME", "IP")
df2.show()
df1.write
.format("com.crealytics.spark.excel")
.option("dataAddress", "'First'!A1:B1000")
.option("useHeader", "true")
.mode("append")
.save("/hdd/home/NNogerbek/data.xlsx")
df2.write
.format("com.crealytics.spark.excel")
.option("dataAddress", "'Second'!A1:B1000")
.option("useHeader", "true")
.mode("append")
.save("/hdd/home/NNogerbek/data.xlsx")
Run Code Online (Sandbox Code Playgroud) 最近我想做 Spark Summit 2016 的 Spark 机器学习实验室。培训视频在这里,导出的笔记本可以在这里找到。
实验室使用的数据集可以从UCI 机器学习存储库下载。它包含来自燃气发电厂中各种传感器的一组读数。格式为 xlsx 文件,共五张。
为了在实验室中使用数据,我需要读取 Excel 文件中的所有工作表并将它们连接到一个 Spark DataFrame 中。在培训期间,他们使用 Databricks Notebook,但我使用 IntelliJ IDEA 和 Scala 并在控制台中评估代码。
第一步是将所有 Excel 工作表保存到名为 等的单独 xlsx 文件中sheet1.xlxs
,sheet2.xlsx
并将它们放入sheets
目录中。
如何读取所有 Excel 文件并将它们连接到一个 Apache Spark DataFrame 中?