Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Apache spark 从HDFS上的许多文件中获取特定模式的计数,并使用Spark存储在HDFS上的一个文件中_Apache Spark_Hadoop2 - Fatal编程技术网

Apache spark 从HDFS上的许多文件中获取特定模式的计数,并使用Spark存储在HDFS上的一个文件中

Apache spark 从HDFS上的许多文件中获取特定模式的计数,并使用Spark存储在HDFS上的一个文件中,apache-spark,hadoop2,Apache Spark,Hadoop2,我在HDFS上有一个目录,里面有很多文件。 我想计算一个特定文本的出现次数,比如所有文件中的ABCDEF。我能够计算所有文件中的行总数,但不能 从他们那里获取“ABCDEF”的模式计数。 我使用java中的spark作业计算行数 SparkSession spark = SparkSession.builder().appName("LineCount").getOrCreate(); JavaRDD<String> lines = spark.read().textFile(arg

我在HDFS上有一个目录,里面有很多文件。 我想计算一个特定文本的出现次数,比如所有文件中的ABCDEF。我能够计算所有文件中的行总数,但不能 从他们那里获取“ABCDEF”的模式计数。 我使用java中的spark作业计算行数

SparkSession spark = SparkSession.builder().appName("LineCount").getOrCreate();
JavaRDD<String> lines = spark.read().textFile(args).javaRDD();
LOGGER.info("Total number of lines {} ", Long.valueOf(lines.count()));

但它正在将一些垃圾值保存到hdfs上的文件。

这解决了我的问题。可以将sqlDF asTextFile保存在HDFS位置now.import org.apache.spark.sql.SparkSession val spark=SparkSession.builder().appName(“计数”).getOrCreate()import spark.implicits.\val df=spark.read.json(“hdfs://10.1.2.3:9000/test/test.json)df.show df.select(“ID”).show()df.createOrReplaceTempView(“虚拟”)val sqlDF=spark.sql(“从ID为“%6630404a9%”的dummy中选择count(*))sqlDF.show()但是,使用默认内存,spark无法从HDFS读取JSON,因此我必须给它更多内存。但是,不知何故,主节点的内存利用率达到了最大值,没有内存可供任何java进程运行。因此,我不得不停止spark守护进程(这解决了java问题)。我会给太多的内存来激发进程。如何优化spark的内存分配?这解决了我的问题。可以将sqlDF asTextFile保存在HDFS位置now.import org.apache.spark.sql.SparkSession val spark=SparkSession.builder().appName(“计数”).getOrCreate()import spark.implicits.\val df=spark.read.json(“hdfs://10.1.2.3:9000/test/test.json)df.show df.select(“ID”).show()df.createOrReplaceTempView(“虚拟”)val sqlDF=spark.sql(“从ID为“%6630404a9%”的dummy中选择count(*))sqlDF.show()但是,使用默认内存,spark无法从HDFS读取JSON,因此我必须给它更多内存。但是,不知何故,主节点的内存利用率达到了最大值,没有内存可供任何java进程运行。因此,我不得不停止spark守护进程(这解决了java问题)。我会给太多的内存来激发进程。如何优化spark的内存分配?
Path path=new Path("hdfs://10.1.2.3:9000/test/directory");
FileSystem fs = FileSystem.get(new Configuration());
BufferedWriter br=new BufferedWriter(new OutputStreamWriter(fs.create(path,true)));
br.write((int) lines.count());
br.close();
spark.stop();