小编Rah*_*rma的帖子

如何将Spark RDD保存到本地文件系统

我可以用saveAsTextFile语法将文件保存到本地系统吗?这就是我编写保存文件的语法: insert_df.rdd.saveAsTextFile("<local path>")

当我正在尝试这样做时,我得到错误,因为没有权限,但我拥有该特定本地路径的所有权限,看起来它将文件视为HDFS文件.

hadoop hive scala dataframe apache-spark

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

HIVE 中的 FIRST() 或 LAST() 聚合函数

我是 HIVE 和 SPARK 的新手。

考虑我在 SQL 中有以下查询。

select col1, col2, min(col3), first(col4) from tablename group by col1, col2
Run Code Online (Sandbox Code Playgroud)

因为我不想将 col4 包含在组中,所以我首先采用了(col4)(但我希望显示 col4)

  1. 我想在 Hive 中编写相同的查询,但在 Hive 中没有第一个函数。

    参考:https : //docs.treasuredata.com/articles/hive-aggregate-functions

  2. 我想在Spark SQL 中编写相同的查询(使用数据帧)。同样,在 spark 聚合函数中也没有第一个函数。(* 可用的聚合方法有avg, max, min, sum, count. *)

参考:org.apache.spark.sql.GroupedData

例如: val df1 = sqlContext.sql(" select * from TABLENAME").groupBy("COL1","COL2").agg("COL3" -> "MIN", "COL4" -> "????")

有没有办法用 hive 和 spark 写同样的东西?

mysql hive apache-spark apache-spark-sql spark-dataframe

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

Spark支持条款吗?

我有一个employee_1带有属性ID和名称(带有数据)的表,还有另一个employee_2具有相同属性的表,我想通过将ID值增加+1来加载数据

我的有子句如下所示:

WITH EXP AS (SELECT  ALIASNAME.ID+1 ID, ALIASNAME.NAME NAME FROM employee_1 ALIASNAME)
INSERT INTO TABLE employee_2 SELECT * FROM EXP; 
Run Code Online (Sandbox Code Playgroud)

执行步骤:

我在HDFS位置有一个文件(包含数据)。

  1. 根据hdfs位置创建RDD。
  2. RDD到Hive临时表
  3. 从临时表到Hive目标(employee_2)。

当我从后端成功运行测试程序时。但数据未加载。employee_2是空的。

注意:如果您在Hive中运行上述with子句,它将成功并加载数据。但是火花不会在1.6中吗?

hadoop apache-spark

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

如何使用一个或多个StructType创建模式(StructType)?

我正在尝试创建StructType另一个内部StructType,但它只允许添加一个StructField.我找不到任何方法来添加StructType它.

如何StructType为下面的字符串表示创建模式?

struct<abc:struct<name:string>,pqr:struct<address:string>>
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql

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

Apache druid 没有已知的服务器

我正在尝试按照此处的快速入门指南在单台计算机上设置 Apache Druid 。当我启动历史服务器时,它 io.druid.java.util.common.IOE: No known server在屏幕上显示异常。

命令:

java `cat conf-quickstart/druid/historical/jvm.config xargs` \
-cp "conf-quickstart/druid/_common:conf-quickstart/druid/historical:lib/*" \
io.druid.cli.Main server historical
Run Code Online (Sandbox Code Playgroud)

完整的堆栈跟踪-

2018-04-07T18:23:40,234 警告 [main] io.druid.java.util.common.RetryUtils - 尝试 1 失败,在 1,246 毫秒内重试。io.druid.java.util.common.IOE: io.druid.discovery.DruidLeaderClient.getCurrentKnownLeader(DruidLeaderClient.java:276) ~[druid-server-0.12.0.jar:0.12.0] 处没有已知服务器.druid.discovery.DruidLeaderClient.makeRequest(DruidLeaderClient.java:128) ~[druid-server-0.12.0.jar:0.12.0] 在 io.druid.query.lookup.LookupReferencesManager.fetchLookupsForTier(LookupReferencesManager.java:569) 〜[druid-server-0.12.0.jar:0.12.0] 在 io.druid.query.lookup.LookupReferencesManager.tryGetLookupListFromCoordinator(LookupReferencesManager.java:420) 〜[druid-server-0.12.0.jar:0.12.0 ] 在 io.druid.query.lookup.LookupReferencesManager.lambda$getLookupListFromCoordinator$4(LookupReferencesManager.java:398) ~[druid-server-0.12.0.jar:0.12.0] 在 io.druid.java.util.common。 RetryUtils.retry(RetryUtils.java:63) [java-util-0.12.0.jar:0.12.0] 在 io.druid.java.util.common.RetryUtils.retry(RetryUtils.java:81) [java-util -0.12.0.jar:0.12.0] 在 io.druid.query.lookup.LookupReferencesManager.getLookupListFromCoordinator(LookupReferencesManager.java:388) [druid-server-0.12.0.jar:0.12.0]

我曾多次尝试使用快速入门指南中提到的完全相同的步骤从头开始设置,但我无法解决此错误。如何解决这个错误?

java druid

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

如何设置Spark作业暂存位置

我的 Spark 作业失败,因为用户无权访问 Spark 尝试写入暂存或临时数据集的目录。

2017-03-10 10:25:47,0928 错误 JniCommon fs/client/fileclient/cc/jni_MapRClient.cc:2072 线程:26413 mkdirs 失败 /user/cxpdiprod/.sparkStaging/application_1488190062017_14041,错误 13 线程中的异常“main “ org.apache.hadoop.security.AccessControlException:用户 cxpdiprod(用户 id 99871)已被拒绝访问在 com.mapr.fs.MapRFileSystem.makeDir(MapRFileSystem.java:1250)在 com.mapr.fs.MapRFileSystem 创建 application_1488190062017_14041 .mkdirs(MapRFileSystem.java:1270) 在 org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1913) 在 org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:634) 在 org. apache.spark.deploy.yarn.Client.prepareLocalResources(Client.scala:356) 在 org.apache.spark.deploy.yarn.Client.createContainerLaunchContext(Client.scala:727) 在 org.apache.spark.deploy.yarn。 Client.submitApplication(Client.scala:142) 在 org.apache.spark.deploy.yarn.Client.run(Client.scala:1021) 在 org.apache.spark.deploy.yarn.Client$.main(Client.scala) :1081)在org.apache.spark.deploy.yarn.Client.main(Client.scala)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:497) 在 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy $SparkSubmit$$runMain(SparkSubmit.scala:742)

用户“cxpdiprod”可以访问集群中的其他目录,即/mapr/ui/abc。是否有任何属性可以为临时文件和临时文件设置不同的目录?

hadoop apache-spark

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

输入字符串ea的java 9 NumberFormatException上的Spark作业失败

我有一个示例spark工作,我成功地能够在java 8上运行但是当我在java 9上运行相同的程序时,它失败了 NumberFormatException

SparkConf conf = new SparkConf();
conf.setMaster("local[*]").setAppName("java 9 example");
SparkSession session = SparkSession.builder().config(conf).getOrCreate();
Dataset<Row> ds = session.read().text("<xyz path>");
System.out.println(ds.count());
Run Code Online (Sandbox Code Playgroud)

例外细节:

线程"main"中的异常java.lang.NumberFormatException:对于输入字符串:java.base/java.lang.Integer.parseInt中java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)的输入字符串:"ea" (Integer.java:695)在scala.collection的scala.collection.immutable.StringLike $ class.toInt(StringLike.scala:229)的java.base/java.lang.Integer.parseInt(Integer.java:813)中.位于org.apache的org.apache.spark.SparkContext.warnDeprecatedVersions(SparkContext.scala:353)的orutable.StringOps.toInt(StringOps.scala:31)org.apache.Spark.SparkContext.(SparkContext.scala:186). spark.SparkContext $ .getOrCreate(SparkContext.scala:2313)org.apache.spark.sql.SparkSession $ Builder $$ anonfun $ 6.apply(SparkSession.scala:868)at org.apache.spark.sql.SparkSession $ Builder来自com的org.apache.spark.sql.SparkSession $ Builder.getOrCreate(SparkSession.scala:860)的scala.Option.getOrElse(Option.scala:120)上的$$ anonfun $ 6.apply(SparkSession.scala:860). ts.spark.session.TestApp.main(TestApp.java:18)

Maven spark依赖项:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>2.1.0</version>
</dependency>

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.10</artifactId>
    <version>2.1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Java详细信息:

java版"9-ea"
Java(TM)SE运行时环境(版本9-ea + 156)
Java HotSpot(TM)64位服务器VM(版本9-ea + 156,混合模式)

在java 9上设置spark需要遵循的其他步骤吗?谢谢!

java scala apache-spark java-9

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

找不到零实际参数的适用构造函数/方法 - Apache Spark Java

我的 Spark 作业在运行时遇到了奇怪的错误。我没有看到MyBean类有任何问题,知道下面的驱动程序代码可能有什么问题吗?谢谢

Maven 依赖关系-

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>2.1.0</version>
</dependency>

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.10</artifactId>
    <version>2.1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

司机-

SparkSession spark = SparkSession.builder().config(conf).getOrCreate();
spark.createDataset(Arrays.asList(new MyBean(10),new MyBean(20)),
      Encoders.bean(MyBean.class)).show();
Run Code Online (Sandbox Code Playgroud)

……

class MyBean implements Serializable {
    int i;
    public MyBean(){}
    public MyBean(int i){this.i=i;}
    public int getI() {return i;}
    public void setI(int i) {this.i = i;}
}
Run Code Online (Sandbox Code Playgroud)

运行时异常-

错误 org.codehaus.commons.compiler.CompileException:org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator org.codehaus.commons.commons.compiler.CompileException:文件“ generated.java”,第 43 行,第 21 列:否找到零实际参数的适用构造函数/方法;候选者是: org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004) 处的“public int com.ts.spark.datasets.MyBean.getI()” org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler. java:8307) 在 org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8169) 在 org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8071)

java apache-spark apache-spark-sql apache-spark-dataset

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

jshell中C选项有什么用

我已经阅读了jshell 指南介绍,但在 jshell 中找不到关于 -C 选项的描述/示例。

$jshell --help
 -C<flag>              Pass <flag> to the compiler.
                        Use one -C for each compiler flag or flag argument
Run Code Online (Sandbox Code Playgroud)

java java-9 jshell

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

在 hive 中使用 group by 对数组类型进行collect_set

我有下表,其中包含 id 上的重复项以及每个 id 的值数组,我想找出每个 id 的唯一值,该怎么做?

CREATE TABLE test(
id string,
values array<string>)
Run Code Online (Sandbox Code Playgroud)

当我运行下面的命令时,它会抛出错误,因为collect_set仅支持原始类型值。

select id, collect_set(values) from ts group by id;
Run Code Online (Sandbox Code Playgroud)

错误:

FAILED: UDFArgumentTypeException 仅接受原始类型参数,但数组作为参数 1 传递。

hadoop hive

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