小编bai*_*rek的帖子

加载 Excel 文件的强制性选项是什么?

我已经使用以下语法从 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)

excel scala apache-spark apache-spark-sql spark-excel

5
推荐指数
1
解决办法
2216
查看次数

如何在 Scala/Spark 中从多个 DataFrame 创建包含多个工作表的 Excel 文件?

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)

excel scala dataframe apache-spark spark-excel

5
推荐指数
1
解决办法
6699
查看次数

如何并行运行多个 sbt 项目?

我有一个多项目 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(它们将在不同的端口上运行)

scala sbt playframework microservices

5
推荐指数
1
解决办法
438
查看次数

在 pyspark 中读取 Excel (.xlsx) 文件

我正在尝试从 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”对象不可调用

apache-spark pyspark spark-excel

5
推荐指数
1
解决办法
1万
查看次数

如何读取多个 Excel 文件并将它们连接到一个 Apache Spark DataFrame 中?

最近我想做 Spark Summit 2016 的 Spark 机器学习实验室。培训视频在这里,导出的笔记本可以在这里找到。

实验室使用的数据集可以从UCI 机器学习存储库下载。它包含来自燃气发电厂中各种传感器的一组读数。格式为 xlsx 文件,共五张。

为了在实验室中使用数据,我需要读取 Excel 文件中的所有工作表并将它们连接到一个 Spark DataFrame 中。在培训期间,他们使用 Databricks Notebook,但我使用 IntelliJ IDEA 和 Scala 并在控制台中评估代码。

第一步是将所有 Excel 工作表保存到名为 等的单独 xlsx 文件中sheet1.xlxssheet2.xlsx并将它们放入sheets目录中。

如何读取所有 Excel 文件并将它们连接到一个 Apache Spark DataFrame 中?

excel scala apache-spark apache-spark-dataset spark-excel

3
推荐指数
1
解决办法
1万
查看次数

即使枢轴不是操作,Spark 枢轴也会调用作业

可能是一个愚蠢的问题,但我注意到:

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 的某个方面(即操作)有关。

apache-spark apache-spark-sql

3
推荐指数
1
解决办法
806
查看次数

必须设置环境变量 AWS_ACCESS_KEY_ID

我使用的是 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)

linux amazon-web-services apache-spark

3
推荐指数
1
解决办法
2万
查看次数

如何在Scala中将方法参数限制为子类类型

我有一个特征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)

generics scala

1
推荐指数
1
解决办法
1752
查看次数

解析 2.000,00 到 2000 和 2.000,15 到 2000.15

我正在努力在 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)

java number-formatting

0
推荐指数
1
解决办法
162
查看次数

在您的系统上找不到合适的 Java 虚拟机

我在我的计算机上运行 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)

有谁知道我该如何解决这个问题?非常感谢。

java ubuntu-16.04

-2
推荐指数
1
解决办法
5194
查看次数