我可以用saveAsTextFile语法将文件保存到本地系统吗?这就是我编写保存文件的语法: insert_df.rdd.saveAsTextFile("<local path>")
当我正在尝试这样做时,我得到错误,因为没有权限,但我拥有该特定本地路径的所有权限,看起来它将文件视为HDFS文件.
我是 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)
我想在 Hive 中编写相同的查询,但在 Hive 中没有第一个函数。
参考:https : //docs.treasuredata.com/articles/hive-aggregate-functions
我想在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 写同样的东西?
我有一个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位置有一个文件(包含数据)。
当我从后端成功运行测试程序时。但数据未加载。employee_2是空的。
注意:如果您在Hive中运行上述with子句,它将成功并加载数据。但是火花不会在1.6中吗?
我正在尝试创建StructType另一个内部StructType,但它只允许添加一个StructField.我找不到任何方法来添加StructType它.
如何StructType为下面的字符串表示创建模式?
struct<abc:struct<name:string>,pqr:struct<address:string>>
Run Code Online (Sandbox Code Playgroud) 我正在尝试按照此处的快速入门指南在单台计算机上设置 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]
我曾多次尝试使用快速入门指南中提到的完全相同的步骤从头开始设置,但我无法解决此错误。如何解决这个错误?
我的 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。是否有任何属性可以为临时文件和临时文件设置不同的目录?
我有一个示例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需要遵循的其他步骤吗?谢谢!
我的 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)
我已经阅读了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) 我有下表,其中包含 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 传递。