Apache spark 什么是;避免每个集群有多个Kudu客户端”;什么意思?
我正在看库杜的文件 以下是kudu spark的部分描述 避免每个集群有多个Kudu客户端。 一个常见的Kudu Spark编码错误是实例化额外的Apache spark 什么是;避免每个集群有多个Kudu客户端”;什么意思?,apache-spark,apache-kudu,Apache Spark,Apache Kudu,我正在看库杜的文件 以下是kudu spark的部分描述 避免每个集群有多个Kudu客户端。 一个常见的Kudu Spark编码错误是实例化额外的KuduClient对象。在kudu spark中,KuduClient属于KuduContext。Spark应用程序代码不应创建另一个连接到同一群集的KuduClient。相反,应用程序代码应该使用KuduContext来访问KuduClient使用KuduContext\syncClient 要诊断Spark作业中的多个KuduClient实例,
KuduClient
对象。在kudu spark中,KuduClient
属于KuduContext
。Spark应用程序代码不应创建另一个连接到同一群集的KuduClient
。相反,应用程序代码应该使用KuduContext
来访问KuduClient
使用KuduContext\syncClient
要诊断Spark作业中的多个KuduClient
实例,请在主服务器的日志中查找由于许多GetTableLocations
或GetTableLocations
请求而过载的迹象,这些请求通常同时来自不同的客户端。这种症状在Spark Streaming code中尤其可能,在Spark Streaming code中,为每个任务创建KuduClient
,将导致来自新客户端的主请求周期性波动
这是否意味着我一次只能运行一个kudu spark任务
如果我有一个spark流媒体程序总是向kudu写入数据,
如何使用其他spark程序连接到kudu?在非spark程序中,您使用kudu客户端访问kudu。对于Spark应用程序,对于KUDU集群,您使用已经有这样一个客户端的KUDU上下文 简单的JAVA程序需要使用JavaAPI和maven的KUDU客户机 接近 看 Spark/Scala程序,其中许多程序可以同时运行 使用Spark KUDU集成针对同一集群。一小条 从官方指南中借来的,就像很久以前我看到的一样
请参见关于“每个集群避免多个Kudu客户端”的更明确的说法是“每个spark应用程序避免多个Kudu客户端” 相反,应用程序代码应该使用KuduContext来使用KuduContext#syncClient访问KuduClient
如果我有两个spark程序,那么我有两个kuduContext对象。但该文件称“避免每个集群有多个kudu客户端”。我该怎么办?这不是问题。每个Spark程序都有一个KUDU上下文。这很好,否则这将是一个非常奇怪的概念。我承认它解释得很糟糕。要在Spark作业中诊断多个KuduClient实例。。。这在文本中,如果指南专门针对单个应用程序,则没有问题。但是文档中说“避免每个集群有多个Kudu客户端”。所以我想确认一下,我想我已经说过了
KuduClient kuduClient = new KuduClientBuilder("kudu-master-hostname").build();
import org.apache.kudu.client._
import collection.JavaConverters._
// Read a table from Kudu
val df = spark.read
.options(Map("kudu.master" -> "kudu.master:7051", "kudu.table" -> "kudu_table"))
.format("kudu").load
// Query using the Spark API...
df.select("id").filter("id >= 5").show()
// ...or register a temporary table and use SQL
df.registerTempTable("kudu_table")
val filteredDF = spark.sql("select id from kudu_table where id >= 5").show()
// Use KuduContext to create, delete, or write to Kudu tables
val kuduContext = new KuduContext("kudu.master:7051", spark.sparkContext)
// Create a new Kudu table from a dataframe schema
// NB: No rows from the dataframe are inserted into the table
kuduContext.createTable("test_table", df.schema, Seq("key"),
new CreateTableOptions()
.setNumReplicas(1)
.addHashPartitions(List("key").asJava, 3))
// Insert data
kuduContext.insertRows(df, "test_table")