Tag: apache spark

Apache Spark – 添加两列

有没有办法添加两列,以便第一列是日期,第二列包含需要添加的天数? 我尝试着 date_add(res.col(“date”), res.col(“days”)); 但这不起作用,因为date_add()需要一个Column和一个int ,而我有两列。 谢谢!

Spark:从具有不同内存/核心配置的单个JVM作业同时启动

问题解释 假设您拥有带有独立管理器的Spark集群,其中通过在客户端应用程序中创建的SparkSession来调度作业。 客户端应用程序在JVM上运行。 为了提高性能,您必须使用不同的配置启动每个作业,请参阅下面的作业类型示例 。 问题是您无法从单个JVM创建两个会话 。 那么你将如何同时启动具有不同会话配置的多个Spark作业? 通过不同的会话配置,我的意思是: spark.executor.cores spark.executor.memory spark.kryoserializer.buffer.max spark.scheduler.pool 等等 我的想法 解决问题的可能方法: 在同一SparkSession为每个Spark作业设置不同的会话配置。 可能吗? 启动另一个JVM只是为了启动另一个SparkSession ,我可以称之为Spark会话服务。 但你永远不会知道你将来会同时推出多少具有不同配置的工作。 目前 – 我一次只需要2-3种不同的配置。 这可能足够但不灵活。 针对各种工作使用相同的配置进行全局会话。 但这种方法从表现的角度来看是一个底线。 仅将Spark用于繁重的作业,并在Spark之外运行所有快速搜索任务。 但这是一团糟,因为你需要与Spark并行保留另一个解决方案(如Hazelcast),并在它们之间分配资源。 此外,这为所有人带来了额外的复杂性:部署,支持等。 工作类型示例 转储庞大的数据库任务。 它是CPU低但IO密集的长时间运行任务。 因此,您可能希望使用低内存和每个执行程序的内核启动尽可能多的执行程序。 重型句柄转储结果任务。 它是CPU密集型的,因此您将为每台集群计算机启动一个执行程序,具有最大的CPU和核心。 快速检索数据任务,每台机器需要一个执行程序,资源最少。 介于1-2和3之间的中间位置,其中作业应占用一半的群集资源。 等等

此语言级别不支持Lambda表达式

我有一个使用Spark的Java类。 我需要从JavaRDD中过滤掉标题。 这就是我想要这样做的方式。 String first = data.first(); JavaRDD filteredData = data.filter((String s) -> {return !s.contains(first);}); 但是,此代码data.filter((String s) -> {return !s.contains(first);})无法编译。 IntelliJ IDE说“在此语言级别不支持Lambda表达式”。

在Spark中提取hive表分区 – java

Spark中有没有办法只提取分区列名? 我使用的解决方法是使用HiveContext运行“ show extended table like table_name ”

线程主java.lang.exceptionininitializerError中的exception当没有hadoop安装spark时

我正在尝试安装spark2.3.0,更具体地说,它是spark-2.3.0-bin-hadoppo2.7 ‘D:\ spark \ bin’已添加到环境变量PATH中。 同时,安装了JDK-10。 没有安装Hadoop。 但是google说火花可以在没有hadoop的情况下工作。 这是错误消息 C:\Users\a>spark-shell Exception in thread “main” java.lang.ExceptionInInitializerError at org.apache.hadoop.util.StringUtils.(StringUtils.java:80) at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611) at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:273) at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:261) at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:791) at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761) at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634) at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464) at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2464) at org.apache.spark.SecurityManager.(SecurityManager.scala:222) at org.apache.spark.deploy.SparkSubmit$.secMgr$lzycompute$1(SparkSubmit.scala:393) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$secMgr$1(SparkSubmit.scala:393) at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:401) at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:401) at scala.Option.map(Option.scala:146) at org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:400) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:170) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136) […]

当从Java应用程序连接到Spark Standalone时,为什么抛出“无法调用已停止的SparkContext上的方法”?

我已经下载了为Hadoop 2.6及更高版本预先构建的Apache Spark 1.4.1。 我有两台Ubuntu 14.04机器。 其中一个我已经设置为具有单个从设备的Spark主设备,而第二个设备正在运行一个Spark从设备。 执行./sbin/start-all.sh命令时,主站和从站成功启动。 之后,我将spark-shell设置中的示例PI程序–master spark://192.168.0.105:7077到Spark Web UI中显示的Spark主URL。 到目前为止一切都很好。 我创建了一个Java应用程序,并尝试将其配置为在需要时运行Spark作业。 我在pom.xml文件中添加了spark依赖项。 org.apache.spark spark-core_2.11 1.4.1 org.apache.spark spark-streaming_2.11 1.4.1 我创建了一个SparkConfig : private parkConf sparkConfig = new SparkConf(true) .setAppName(“Spark Worker”) .setMaster(“spark://192.168.0.105:7077”); 我使用SparkConfig创建了一个SparkConfig : private SparkContext sparkContext = new SparkContext(sparkConfig); 在此步骤中,将引发以下错误: java.lang.IllegalStateException: Cannot call methods on a stopped SparkContext at org.apache.spark.SparkContext.org$apache$spark$SparkContext$$assertNotStopped(SparkContext.scala:103) at org.apache.spark.SparkContext.getSchedulingMode(SparkContext.scala:1503) at org.apache.spark.SparkContext.postEnvironmentUpdate(SparkContext.scala:2007) […]

在google dataproc集群实例中的spark-submit上运行app jar文件

我正在运行一个.jar文件,其中包含我需要打包的所有依赖项。 其中一个依赖项是com.google.common.util.concurrent.RateLimiter并且已经检查过它的类文件位于此.jar文件中。 不幸的是,当我在google的dataproc-cluster实例的主节点上点击命令spark-submit时,我收到此错误: Exception in thread “main” java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.createStarted()Lcom/google/common/base/Stopwatch; at com.google.common.util.concurrent.RateLimiter$SleepingStopwatch$1.(RateLimiter.java:417) at com.google.common.util.concurrent.RateLimiter$SleepingStopwatch.createFromSystemTimer(RateLimiter.java:416) at com.google.common.util.concurrent.RateLimiter.create(RateLimiter.java:130) at LabeledAddressDatasetBuilder.publishLabeledAddressesFromBlockstem(LabeledAddressDatasetBuilder.java:60) at LabeledAddressDatasetBuilder.main(LabeledAddressDatasetBuilder.java:144) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:672) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 在覆盖我的依赖关系的意义上似乎发生了一些事情。 已经从这个.jar反编译了Stopwatch.class文件并检查了那个方法。 这恰好发生在我运行google dataproc实例时。 我在执行spark-submit的过程中做了grep ,我得到了像这样的标志-cp : /usr/lib/jvm/java-8-openjdk-amd64/bin/java -cp /usr/lib/spark/conf/:/usr/lib/spark/lib/spark-assembly-1.5.0-hadoop2.7.1.jar:/usr/lib/spark/lib/datanucleus-api-jdo-3.2.6.jar:/usr/lib/spark/lib/datanucleus-rdbms-3.2.9.jar:/usr/lib/spark/lib/datanucleus-core-3.2.10.jar:/etc/hadoop/conf/:/etc/hadoop/conf/:/usr/lib/hadoop/lib/native/:/usr/lib/hadoop/lib/*:/usr/lib/hadoop/*:/usr/lib/hadoop-hdfs/lib/*:/usr/lib/hadoop-hdfs/*:/usr/lib/hadoop-mapreduce/lib/*:/usr/lib/hadoop-mapreduce/*:/usr/lib/hadoop-yarn/lib/*:/usr/lib/hadoop-yarn/* 有什么办法可以解决这个问题吗? 谢谢。

使用带有ScalaObjectMapper的Jackson模块在Spark 1.4.0上运行作业时出错

我正在运行一个用Scala 2.10.4编写并在Spark 1.4.0集群上运行的spark作业(基于HDFS并使用YARN管理)并在Maven存储库上使用Jackson模块版本2.6.1 在我的IDE(IntelliJ IDEA v14)本地运行代码时,一切都在内存群集上运行,但在我的远程群集(AWS VPC上的EMR群集)上运行作业时,我收到以下exception: java.lang.AbstractMethodError: com.company.scala.framework.utils.JsonParser$$anon$1.com$fasterxml$jackson$module$scala$experimental$ScalaObjectMapper$_setter_$com$fasterxml$jackson$module$scala$experimental$ScalaObjectMapper$$typeCache_$eq(Lorg/spark-project/guava/cache/LoadingCache;)V at com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper$class.$init$(ScalaObjectMapper.scala:50) at com.company.scala.framework.utils.JsonParser$$anon$1.(JsonParser.scala:14) at com.company.scala.framework.utils.JsonParser$.(JsonParser.scala:14) at com.company.scala.framework.utils.JsonParser$.(JsonParser.scala) at com.company.migration.Migration$.printAllKeys(Migration.scala:21) at com.company.migration.Main$$anonfun$main$1.apply(Main.scala:22) at com.company.migration.Main$$anonfun$main$1.apply(Main.scala:22) at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371) at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327) at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:199) at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56) at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:70) at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) at org.apache.spark.scheduler.Task.run(Task.scala:70) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 我试图查看网页上的例外,没有运气。 我也尝试在这里找一个类似的问题,发现只有一个线程没有可接受的答案,没有一个答案帮助我。 希望在这里找到帮助, 谢谢。

如何在IntelliJ IDE中集成Spark和Scala项目?

我正在使用IntelliJ IDE来使用Scala和Spark。 在这个IDE中,我使用Scala对象创建了一个Scala项目(见图)。 我使用了此网站上的示例回归代码。 我还从GitHub下载了Spark Framework作为非Maven用户(如此处所述)。 我的问题是如何将此Spark框架与我的Scala项目相关联? 我还需要集成一些额外的库才能使用Spark MLLib吗?

Spark Java中的移动平均线

我有实时流数据进入火花,我想对该时间序列数据进行移动平均预测。 有没有办法在Java中使用spark实现它? 我已经提到过: https : //gist.github.com/samklr/27411098f04fc46dcd05/revisions和Apache Spark Moving Average,但这些代码都是用Scala编写的。 由于我不熟悉Scala,我无法判断我是否会发现它有用甚至将代码转换为Java。 在Spark Java中是否有直接的预测实现?