我在AWS上有一个现有的Apache Spark(1.3版本)独立集群,我想安装Apache Zeppelin.
我有一个非常简单的问题,我是否必须在Spark的主人身上安装Zeppelin?
如果答案是肯定的,我可以使用该指南https://github.com/apache/incubator-zeppelin#build吗?
谢谢大家
bigdata amazon-web-services apache-spark apache-spark-sql apache-zeppelin
我试图使用Zeppelin与以下代码:
val dataText = sc.parallelize(IOUtils.toString(new URL("http://XXX.XX.XXX.121:8090/my_data.txt"),Charset.forName("utf8")).split("\n"))
case class Data(id: string, time: long, value1: Double, value2: int, mode: int)
val dat = dataText .map(s => s.split("\t")).filter(s => s(0) != "Header:").map(
s => Data(s(0),
s(1).toLong,
s(2).toDouble,
s(3).toInt,
s(4).toInt
)
).toDF()
dat.registerTempTable("mydatatable")
Run Code Online (Sandbox Code Playgroud)
这一直让我误以为:
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2367)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:535)
at java.lang.StringBuilder.append(StringBuilder.java:204)
at org.apache.commons.io.output.StringBuilderWriter.write(StringBuilderWriter.java:138)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2002)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1980)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1957)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1907)
at org.apache.commons.io.IOUtils.toString(IOUtils.java:778)
at org.apache.commons.io.IOUtils.toString(IOUtils.java:896)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:38)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:43)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:45)
at $iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:47)
at $iwC$$iwC$$iwC$$iwC.<init>(<console>:49)
at $iwC$$iwC$$iwC.<init>(<console>:51) …Run Code Online (Sandbox Code Playgroud) 我是Apache Zeppelin的新手,我尝试在本地运行它.我尝试运行一个简单的健全性检查,看看它是否sc存在并得到以下错误.
我编译它为pyspark和spark 1.5(我使用spark 1.5).我将内存增加到5 GB并将端口更改为8091.
我不确定我做错了什么,所以我得到以下错误,我该如何解决它.
提前致谢
抛出java.lang.ClassNotFoundException:org.apache.spark.repl.SparkCommandLine在java.net.URLClassLoader.findClass(URLClassLoader.java:381)在java.lang.ClassLoader.loadClass(ClassLoader.java:424)在sun.misc.启动$ AppClassLoader.loadClass(Launcher.java:331)在java.lang.ClassLoader.loadClass(ClassLoader.java:357)在org.apache.zeppelin.spark.SparkInterpreter.open(SparkInterpreter.java:401)在org.apache .zeppelin.interpreter.ClassloaderInterpreter.open(ClassloaderInterpreter.java:74)org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:68)at org.apache.zeppelin.spark.PySparkInterpreter.getSparkInterpreter(PySparkInterpreter.java) :485)org.apache.zeppelin.spark.PySparkInterpreter.createGatewayServerAndStartScript(PySparkInterpreter.java:174)org.apache.zeppelin.spark.PySparkInterpreter.open(PySparkInterpreter.java:152)org.apache.zeppelin.interpreter. org.apache.zeppelin.interpreter.Lazy中的ClassloaderInterpreter.open(ClassloaderInterpreter.java:74)org.apache.zeppelin.interpret(LazyOpenInterpreter.java:92)中的OpenInterpreter.open(LazyOpenInterpreter.java:68)位于org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer $ InterpretJob.jobRun(RemoteInterpreterServer.java: 302)在org.apache.zeppelin.scheduler.Job.run(Job.java:171)在org.apache.zeppelin.scheduler.FIFOScheduler $ 1.run(FIFOScheduler.java:139)在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)在java.util.concurrent.FutureTask.run(FutureTask.java:266)在java.util.concurrent.ScheduledThreadPoolExecutor中$ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180)在爪哇. util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java: 617)在java.lang.Thread.run(Thread.java:745)
更新 我的解决方案是将我的scala版本从2.11.*降级到2.10.*,再次构建Apache Spark并运行Zeppelin.
斯卡拉:
val df = sc.parallelize(Seq(
("Jan" , "1", "1","3"),
("Feb" , "2", "5","2"),
("Mar" , "2", "3","1")))
.toDF("time" , "f1", "f2", "f3")
df.registerTempTable("inout")
Run Code Online (Sandbox Code Playgroud)
sql:
%sql
select time , f1 , f2 , f3
from inout
Run Code Online (Sandbox Code Playgroud)
但是我想在单个可视化上绘制所有数据点的图形,因此应绘制三条线,其中每条线显示f1,f2,f3的点.目前只显示"f1":
如何在单线图中显示所有数据?
换句话说,如何将这三个折线图显示为单个图表?:
我想将Apache Zeppelin笔记本集成到另一个已与Apache Spark集成的Web应用程序中。
最好的方法是什么?我正在考虑两种可能性:
我希望我的意图很明确。如果有一种简单的渲染Zeppelin笔记本的方法,我希望第一种选择。
我使用Zeppelin包中提供的本机驱动程序将我的Zeppelin连接到postgresql.我有一个专栏 - ID(表中有一个表'a'),其中包含进一步处理所需的所有ID.
例
====================================
ID | Value 1 | Value2
====================================
1 | 23 | text1
2 | 13 | text2
3 | 03 | text3
4 | 99 | text4
5 | 12 | text5
Run Code Online (Sandbox Code Playgroud)
现在,如何将此ID列填充为动态表单以进一步选择用户下拉列表?
我知道我可以使用spark上下文和JDBC驱动器.但那将是一种矫枉过正.我所有的进一步处理都是用DB进行分析.所以我更喜欢从psql解释器本身创建下拉动态表单.
我目前正在使用Apache Zeppelin + Spark 2.x内部的普通发行版构建自定义docker容器.
我的Spark作业将在远程集群中运行,我将yarn-client用作主人.
当我运行笔记本并尝试打印时sc.version,程序卡住了.如果我转到远程资源管理器,已经创建并接受了一个应用程序,但在日志中我可以阅读:
INFO yarn.ApplicationMaster: Waiting for Spark driver to be reachable
我对情况的理解是集群无法与容器中的驱动程序通信,但我不知道如何解决这个问题.
我目前正在使用以下配置:
spark.driver.port设置为PORT1和选项-p PORT1:PORT1传递给容器spark.driver.host设置为172.17.0.2(容器的IP)SPARK_LOCAL_IP设置为172.17.0.2(容器的IP)spark.ui.port设置为PORT2和选项-p PORT2:PORT2传递给容器我觉得我应该将SPARK_LOCAL_IP更改为主机ip,但如果我这样做,SparkUI无法启动,阻止该过程前一步.
提前感谢任何想法/建议!
我有一个关于在Apache Zeppelin中使用JDBC和SparkSession从远程HiveServer2读取数据的问题。
这是代码。
%spark
import org.apache.spark.sql.Row
import org.apache.spark.sql.SparkSession
val prop = new java.util.Properties
prop.setProperty("user","hive")
prop.setProperty("password","hive")
prop.setProperty("driver", "org.apache.hive.jdbc.HiveDriver")
val test = spark.read.jdbc("jdbc:hive2://xxx.xxx.xxx.xxx:10000/", "tests.hello_world", prop)
test.select("*").show()
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我没有错误,但是也没有数据,我只是检索表的所有列名,如下所示:
+--------------+
|hello_world.hw|
+--------------+
+--------------+
Run Code Online (Sandbox Code Playgroud)
代替这个:
+--------------+
|hello_world.hw|
+--------------+
+ data_here +
+--------------+
Run Code Online (Sandbox Code Playgroud)
我正在所有这些上运行:Scala 2.11.8,OpenJDK 8,Zeppelin 0.7.0,Spark 2.1.0(bde / spark),Hive 2.1.1(bde / hive)
我在Docker中运行此安装程序,每个安装程序都有自己的容器,但连接在同一网络中。
此外,它仅在我使用Spark Beeeline连接到我的远程Hive时有效。
我忘了什么吗?任何帮助,将不胜感激。提前致谢。
编辑:
我找到了一种解决方法,即在Spark和Hive之间共享docker卷或docker数据容器,更确切地说是在两者之间共享Hive仓库文件夹,并配置spark-defaults.conf。然后,您可以在没有JDBC的情况下通过SparkSession访问配置单元。这是逐步的方法:
像这样配置spark-defaults.conf:
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory Xg
spark.driver.cores X
spark.executor.memory Xg
spark.executor.cores X
spark.sql.warehouse.dir file:///your/path/here
Run Code Online (Sandbox Code Playgroud)将“ X”替换为您的值。
希望能帮助到你。
我安装了https://github.com/big-data-europe/docker-hadoop-spark-workbench
然后开始了docker-compose up.我导航到git自述文件中提到的各种网址,所有内容似乎都已启动.
然后我开始了一个本地的apache zeppelin:
./bin/zeppelin.sh start
Run Code Online (Sandbox Code Playgroud)
在zeppelin解释器设置中,我已导航到spark解释器并更新master以指向安装的本地群集 docker
master:从更新local[*]到spark://localhost:8080
然后我在笔记本中运行以下代码:
import org.apache.hadoop.fs.{FileSystem,Path}
FileSystem.get( sc.hadoopConfiguration ).listStatus( new Path("hdfs:///")).foreach( x => println(x.getPath ))
Run Code Online (Sandbox Code Playgroud)
我在zeppelin日志中遇到此异常:
INFO [2017-12-15 18:06:35,704] ({pool-2-thread-2} Paragraph.java[jobRun]:362) - run paragraph 20171212-200101_1553252595 using null org.apache.zeppelin.interpreter.LazyOpenInterpreter@32d09a20
WARN [2017-12-15 18:07:37,717] ({pool-2-thread-2} NotebookServer.java[afterStatusChange]:2064) - Job 20171212-200101_1553252595 is finished, status: ERROR, exception: null, result: %text java.lang.NullPointerException
at org.apache.zeppelin.spark.Utils.invokeMethod(Utils.java:38)
at org.apache.zeppelin.spark.Utils.invokeMethod(Utils.java:33)
at org.apache.zeppelin.spark.SparkInterpreter.createSparkContext_2(SparkInterpreter.java:398)
at org.apache.zeppelin.spark.SparkInterpreter.createSparkContext(SparkInterpreter.java:387)
at org.apache.zeppelin.spark.SparkInterpreter.getSparkContext(SparkInterpreter.java:146)
at org.apache.zeppelin.spark.SparkInterpreter.open(SparkInterpreter.java:843)
at org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:70)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:491)
at org.apache.zeppelin.scheduler.Job.run(Job.java:175)
at org.apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.java:139) …Run Code Online (Sandbox Code Playgroud) 问题:我想通过Jupyter API与另一个应用程序中的Jupyter进行交互,特别是我至少希望从该应用程序中运行我的笔记本(对我来说,完美的变体是在运行之前编辑一些段落)。我已经阅读了API文档,但没有找到我需要的东西。
为此,我使用了具有相同结构(笔记本和段落)的Apache Zeppelin。
有人出于我刚刚描述的目的使用Jupyter吗?
python remote-access jupyter apache-zeppelin jupyter-notebook
apache-zeppelin ×10
apache-spark ×7
docker ×2
scala ×2
bigdata ×1
dynamicform ×1
hadoop ×1
hdfs ×1
hive ×1
interpreter ×1
jdbc ×1
jupyter ×1
pyspark ×1
python ×1