Spark RDD操作之Map系算子

  在linux系统上安装solrCloud
  
  1.依赖:
  
  JRE solr7.3 需要 java1.8
  
  独立的zookeeper服务 ,zookeeper安装请参考:
  
  http://zookeeper.apache.org/doc/current/zookeeperStarted.html
  
  2.上传solr安装包
  
  3.从安装包中解出安装脚本
  
  tar xzf solr-7.3.0.tgz solr-7.3.0/bin/install_solr_service.sh --strip-components=2
  
  安装脚本可用于:CentOS, Debian, Red Hat, SUSE and Ubuntu Linux distributions
  
  4.安装脚本参数说明:
  
  ./install_solr_service.sh -help
  
  -i 指定软件安装目录。默认 /opt
  
  -d 指定数据目录(solr主目录):内核存储目录 。默认 /var/solr
  
  -u 指定要创建的拥有solr的用户名,出于安全考虑,不应以root来运行。默认 solr
  
  -s 指定系统服务名。默认 solr
  
  -p 指定端口。默认 8983
  
  5.目录规划
  
  6.以root身份运行安装脚本进行安装
  
  ./install_solr_service.sh solr-7.3.0.tgz
  
  等同:
  
  ./install_solr_service.sh solr-7.3.0.tgz -i /opt -d /var/solr -u solr -s solr -p 8983
  
  配置solr服务实例
  
  1.认识solr服务的配置文件
  
  问:如何启动一个solr服务实例?
  
  1,系统服务脚本: /etc/init.d/solr 请查看该脚本内容,看系统启动时是如何启动solr服务实例的。 可看到使用了如下三个变量:
  
  2.环境参数配置文件(官方叫法:include file)。它将覆盖 bin/solr启停控制脚本中的配置参数。我们通过该文件来配置修改solr服务实例的运行配置。
  
  请查看 /etc/default/solr.in.sh ,看我们可以在该文件中进行哪些配置。
  
  在 /etc/default/solr.in.sh 中可看到它配置了如下参数:
  
  map将RDD的元素一个个传入call方法,经过call方法的计算之后,逐个返回,生成新的RDD,计算之后,记录数不会缩减。示例代码,将每个数字加10之后再打印出来, 代码如下
  
  import java.util.Arrays;
  
  import org.apache.spark.SparkConf;
  
  import org.apache.spark.api.java.JavaRDD;
  
  import org.apache.spark.api.java.JavaSparkContext;
  
  import org.apache.spark.api.java.function.Function;
  
  import org.apache.spark.api.java.function.VoidFunction;
  
  public class Map {
  
  public static void main(String[] args) {
  
  SparkConf conf = new SparkConf(www.yongshiyule178.com/).setAppName( www.dfgjpt.com"spark map").setMaster("local[*]");
  
  JavaSparkContext javaSparkContext www.michenggw.com new JavaSparkContext(conf);
  
  JavaRDD<Integer> listRDD = javaSparkContext.parallelize(Arrays.asList(1, 2, 3, 4));
  
  JavaRDD<Integer> numRDD www.yongshi123.cn =www.tiaotiaoylzc.com listRDD.map(new Function<Integer, Integer>() {
  
  @Override
  
  public Integer call(Integer num) throws Exception {
  
  return num + 10;
  
  numRDD.foreach(new VoidFunction<Integer>(www.cmeidi.cn) {
  
  @Override
  
  public void call(Integer num) throws Exception {
  
  System.out.println(num);
  
  执行结果:
  
  2、flatMap
  
  flatMap和map的处理方式一样,都是把原RDD的元素逐个传入进行计算,但是与之不同的是,flatMap返回值是一个Iterator,也就是会一生多,超生
  
  import java.util.Arrays;
  
  import java.util.Iterator;
  
  import org.apache.spark.SparkConf;
  
  import org.apache.spark.api.java.JavaRDD;
  
  import org.apache.spark.api.java.JavaSparkContext;
  
  import org.apache.spark.api.java.function.FlatMapFunction;
  
  import org.apache.spark.api.java.function.VoidFunction;
  
  public class FlatMap {
  
  public static void main(String[] args) {
  
  SparkConf conf = new SparkConf().setAppName(www.mhylpt.com"spark map"www.ycjszpgs.com).setMaster("local[*]");
  
  JavaSparkContext javaSparkContext = new JavaSparkContext(conf);
  
  JavaRDD<String> listRDD = javaSparkContext
  
  .parallelize(Arrays.asList("hello wold", "hello java", "hello spark"));
  
  JavaRDD<String> rdd = listRDD.flatMap(new FlatMapFunction<String, String>() {
  
  private static final long serialVersionUID = 1L;
  
  @Override
  
  public Iterator<String>www.myzx1.com call(String input) throws Exception {
  
  return Arrays.asList(input.split()).iterator();
  
  rdd.foreach(new VoidFunction<String>() {
  
  private static final long serialVersionUID = 1L;
  
  @Override
  
  public void call(String num) throws Exception {
  
  System.out.println(num);

猜你喜欢

转载自www.cnblogs.com/qwangxiao/p/10492074.html