Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免“连续性”;“重置偏移量”;及;寻求最新的补偿;?_Java_Apache Spark_Apache Kafka_Spark Structured Streaming - Fatal编程技术网

Java 如何避免“连续性”;“重置偏移量”;及;寻求最新的补偿;?

Java 如何避免“连续性”;“重置偏移量”;及;寻求最新的补偿;?,java,apache-spark,apache-kafka,spark-structured-streaming,Java,Apache Spark,Apache Kafka,Spark Structured Streaming,我试图遵循以下指南: 但我不知道为什么我在大多数情况下不向控制台写入数据,为什么它会发送垃圾邮件执行线程日志? 我需要配置什么吗? 这是我的代码: SparkSession spark = SparkSession .builder() .appName("Testing") .config("spark.master", "local") .getOrCreate(); StructType recordSchema

我试图遵循以下指南: 但我不知道为什么我在大多数情况下不向控制台写入数据,为什么它会发送垃圾邮件执行线程日志?
我需要配置什么吗? 这是我的代码:

SparkSession spark = SparkSession
  .builder()
  .appName("Testing")
  .config("spark.master", "local")
  .getOrCreate();

StructType recordSchema = new StructType()
  .add("description", "string")
  .add("location", "string")
  .add("id", "string")
  .add("title", "string")
  .add("company", "string")
  .add("place", "string")
  .add("date", "string")
  .add("senorityLevel", "string")
  .add("function", "string")
  .add("employmentType", "string")
  .add("industries", "string");

Dataset<Row> df = spark
  .readStream()
  .format("kafka")
  .option("kafka.bootstrap.servers", "127.0.0.1:9092")
  .option("subscribe", "linkedin-producer")
  .option("startingOffsets", "earliest")
  .option("kafka.group.id","test")
  .load();

StreamingQuery query = df
  .selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")
  .select(from_json(col("value").cast("string"), recordSchema).as("data"))
  .select("data.*")
  .writeStream()
  .outputMode(OutputMode.Append())
  .format("console")
  .start();

try {
  query.awaitTermination(10000);
} catch (StreamingQueryException e) {
  e.printStackTrace();
}
pom.xml:

      <!--Spark-->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql-kafka-0-10_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-10_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-avro_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>

org.apache.spark
spark-core_2.12
3.0.0
org.apache.spark
spark-U 2.12
3.0.0
org.apache.spark
spark-sql_2.12
3.0.0
org.apache.spark
spark-sql-kafka-0-10_2.12
3.0.0
org.apache.spark
spark-streaming-kafka-0-10_2.12
3.0.0
org.apache.spark
spark-avro_2.12
3.0.0

您正在获取记录器信息,因为您使用了默认日志记录级别作为信息。通过
spark.sparkContext.setLogLevel(“WARN”)
将日志记录级别设置为WARN,因为您使用了默认日志记录级别作为信息,所以您将获得日志记录程序信息。将日志记录级别设置为通过
spark.sparkContext.setLogLevel(“警告”)
发出警告,因为我知道您只想运行作业10秒,因为您在
中使用了超时

为了避免您的工作不断检查卡夫卡中是否有可用的新邮件,您可以在
writeStream
中设置:

.writeStream()
.outputMode(outputMode.Append())
.option(“checkpointLocation”,“/tmp/java/checkpoint/spark”)
.trigger(trigger.ProcessingTime(“1秒”)#可选
//.trigger(trigger.Once())
.格式(“控制台”)
.start();
这只会每秒检查卡夫卡中的新消息,因此每秒只会看到一次“查找”和“重置”日志


您可能还对
触发器.Once()
备选方案感兴趣。

据我所知,您只想运行作业10秒钟,因为您在
等待终止
中使用了超时

为了避免您的工作不断检查卡夫卡中是否有可用的新邮件,您可以在
writeStream
中设置:

.writeStream()
.outputMode(outputMode.Append())
.option(“checkpointLocation”,“/tmp/java/checkpoint/spark”)
.trigger(trigger.ProcessingTime(“1秒”)#可选
//.trigger(trigger.Once())
.格式(“控制台”)
.start();
这只会每秒检查卡夫卡中的新消息,因此每秒只会看到一次“查找”和“重置”日志


您可能还对
Trigger.Once()
备选方案感兴趣。

您的Spark日志级别是多少?您使用的是哪种spark sql卡夫卡版本?(可能显示所有依赖项)您如何运行/提交应用程序以及在何处运行/提交应用程序?嗨,伙计们,谢谢你们的帮助;我添加了pom.xml,您可以在那里看到版本。我在Java上运行这个,Spark的日志级别是多少?您使用的是哪种spark sql卡夫卡版本?(可能显示所有依赖项)您如何运行/提交应用程序以及在何处运行/提交应用程序?嗨,伙计们,谢谢你们的帮助;我添加了pom.xml,您可以在那里看到版本。我在javaHi himanshu上运行这个,我尝试了
spark.sparkContext().setLogLevel(“警告”)和我仍然得到所有这些日志:(编辑:为了使这项工作有效,我必须在我的类中创建一个日志记录器:
LoggerFactory.getLogger(Spark.class);
嗨,himanshu,我尝试了
Spark.sparkContext().setLogLevel(“WARN”);
和我仍然得到所有这些日志:(编辑:为了使这一切正常工作,我必须在我的类中创建一个记录器:
LoggerFactory.getLogger(Spark.class)
Hi Mike!我想这是正确的方法,但我仍然为
日志获取所有这些
流执行线程。但我想这与日志级别或其他相关Hi Mike!我想这是正确的方法,但我仍然为
日志获取所有这些
流执行线程。但我想这是相对的ted到日志级别还是什么的
      <!--Spark-->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql-kafka-0-10_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-10_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-avro_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>