我已经使用以下语法从 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) 在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) 我有一个多项目 sbt 构建(每个项目都是微服务)。为了开发方便,我想同时运行所有这些。sbt有可能吗?
lazy val root = (project in file("."))
.aggregate(
serviceA,
serviceB
)
lazy val serviceA = (project in file("service-a"))
...
lazy val serviceB = (project in file("service-b"))
...
Run Code Online (Sandbox Code Playgroud)
我可以使用serviceA/run或单独运行它们serviceB/run
但是我需要使用单个 sbt 命令运行 serviceA 和 serviceB(它们将在不同的端口上运行)
我正在尝试从 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”对象不可调用
最近我想做 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 中?
可能是一个愚蠢的问题,但我注意到:
val aggDF = df.groupBy("id").pivot("col1")
Run Code Online (Sandbox Code Playgroud)
导致调用 Job。使用 Notebook 在 Databricks 下运行。这样就得到了:
(1) Spark Jobs
Job 4 View (Stages: 3/3)
Stage 12: 8/8
Stage 13: 200/200
Stage 14: 1/1
Run Code Online (Sandbox Code Playgroud)
我不知道pivot这是文档中的操作。
与往常一样,我无法在文档中找到合适的参考来解释这一点,但可能与被pivot视为操作或调用 Spark 的某个方面(即操作)有关。
我使用的是 Linux 18.04,我想在 EC2 上运行一个 Spark 集群。
我使用export命令设置环境变量
export AWS_ACCESS_KEY_ID=MyAccesskey
export AWS_SECRET_ACCESS_KEY=Mysecretkey
Run Code Online (Sandbox Code Playgroud)
但是当我运行命令来午餐 Spark 集群时,我得到
错误:必须设置环境变量 AWS_ACCESS_KEY_ID
我把我用过的所有命令都放在了以防万一我犯了错误:
sudo mv ~/Downloads/keypair.pem /usr/local/spark/keypair.pem
sudo mv ~/Downloads/credentials.csv /usr/local/spark/credentials.csv
# Make sure the .pem file is readable by the current user.
chmod 400 "keypair.pem"
# Go into the spark directory and set the environment variables with the credentials information
cd spark
export AWS_ACCESS_KEY_ID=ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=SECRET_KEY
# To install Spark 2.0 on the cluster:
sudo spark-ec2/spark-ec2 -k keypair --identity-file=keypair.pem --region=us-west-2 --zone=us-west-2a --copy-aws-credentials --instance-type t2.micro …Run Code Online (Sandbox Code Playgroud) 我有一个特征GameStatistics,它定义了一个add()方法,该方法接受一个参数并返回其自身和参数的总和。子类中的实现应该只接受它们自己类型的实例作为参数(或者也可能是子类型)。
我想使用此add方法来聚合列表GameStatistics,使用 Seq 的reduce方法。
我无法在 Scala 中定义它并使其编译。下面是我尝试过的一个示例及其编译错误。
这些错误对我来说没有任何意义。我应该如何让它发挥作用?
package bgengine
trait GameStatistics {
def equity: Double
def add[G: this.type](s: G): G
def multiply(x: Double): GameStatistics
}
object GameStatistics {
def aggregate(stats: Seq[GameStatistics]): GameStatistics = stats.reduce( _ add _ )
}
case class SimpleGameStatistics(equity: Double, nrGames: Int) extends GameStatistics {
override def add[G: SimpleGameStatistics](s: G): G =
SimpleGameStatistics((equity * nrGames + s.equity * s.nrGames) / (nrGames + s.nrGames), nrGames + s.nrGames).asInstanceOf[G] …Run Code Online (Sandbox Code Playgroud) 我正在努力在 Java 中格式化数字。
我的输入格式如下(我无法更改):2.000,15 ,输出应如下所示:2000.15
如果逗号后只有 0,则输出应如下所示:2000
输入以字符串形式给出。
我已经尝试使用 aDecimalFormat但这只会导致IllegalArgumentException
DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getInstance(Locale.ENGLISH);
decimalFormat.setMinimumFractionDigits(0);
decimalFormat.setMaximumFractionDigits(2);
decimalFormat.setGroupingUsed(false);
return decimalFormat.format(Double.parseDouble(characteristicValue));
Run Code Online (Sandbox Code Playgroud) 我在我的计算机上运行 Ubuntu 16,我试图在我的计算机上运行 Java 应用程序,但出现以下错误:
No suitable Java Virtual Machine could be found on your system.
The version of the JVM must be at least 11.
Please define INSTALL4J_JAVA_HOME to point to a suitable JVM.
Run Code Online (Sandbox Code Playgroud)
但是我已经安装了 Java 和虚拟机。当我按下
$java -version i get the following output:
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (Zulu 8.33.0.1-linux64) (build 1.8.0_192-b01)
OpenJDK 64-Bit Server VM (Zulu 8.33.0.1-linux64) (build 25.192-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
有谁知道我该如何解决这个问题?非常感谢。
apache-spark ×6
scala ×5
spark-excel ×4
excel ×3
java ×2
dataframe ×1
generics ×1
linux ×1
pyspark ×1
sbt ×1
ubuntu-16.04 ×1