第一种:普通做法

  首先,编号写WordCount.scala程序。

   然后,打成jar包,命名为WC.jar。比如,我这里,是导出到windows桌面。

   其次,上传到linux的桌面,再移动到hdfs的/目录。

   最后,在spark安装目录的bin下,执行

spark-submit \
> --class cn.spark.study.core.WordCount \
> --master local[1] \
> /home/spark/Desktop/WC.jar \
> hdfs://SparkSingleNode:9000/spark.txt \
> hdfs://SparkSingleNode:9000/WCout

 第二种:高级做法

  有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本。而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRuntime()给我们提供了以下几种exec()方法:

  不多说,直接进入。

  步骤一: 为了规范起见,命名为JavaShellUtil.java。在本地里写好

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream;
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.List;

public class JavaShellUtil {
public static void main(String[] args) throws Exception {

String cmd="hdfs://SparkSingleNode:9000/spark.txt";
InputStream in = null;

try { 
Process pro =Runtime.getRuntime().exec("sh /home/spark/test.sh "+cmd);
pro.waitFor(); 
in = pro.getInputStream(); 
BufferedReader read = new BufferedReader(new InputStreamReader(in)); 
String result = read.readLine(); 
System.out.println("INFO:"+result); 
} catch (Exception e) { 
e.printStackTrace(); 

}
}

package cn.spark.study.core
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

/**
* @author Administrator
*/
object WordCount {

def main(args: Array[String]) { 
if(args.length < 2){
println("argument must at least 2")
System.exit(1)
}
val conf = new SparkConf()
.setAppName("WordCount") 
// .setMaster("local");//local就是 不是分布式的文件,即windows下和linux下
val sc = new SparkContext(conf)

val inputPath=args(0)
val outputPath=args(1)

val lines = sc.textFile(inputPath, 1)
val words = lines.flatMap { line => line.split(" ") } 
val pairs = words.map { word => (word, 1) } 
val wordCounts = pairs.reduceByKey { _ + _ }
wordCounts.collect().foreach(println)
wordCounts.repartition(1).saveAsTextFile(outputPath)
}
}

  步骤二:编写好test.sh脚本

spark@SparkSingleNode:~$ cat test.sh 
#!/bin/sh
/usr/local/spark/spark-1.5.2-bin-hadoop2.6/bin/spark-submit \
--class cn.spark.study.core.WordCount \
--master local[1] \
/home/spark/Desktop/WC.jar \
$1 hdfs://SparkSingleNode:9000/WCout

  步骤三:上传JavaShellUtil.java,和打包好的WC.jar

spark@SparkSingleNode:~$ pwd
/home/spark
spark@SparkSingleNode:~$ ls
Desktop Downloads Pictures Templates Videos
Documents Music Public test.sh
spark@SparkSingleNode:~$ cd Desktop/
spark@SparkSingleNode:~/Desktop$ ls
JavaShellUtil.java WC.jar
spark@SparkSingleNode:~/Desktop$ javac JavaShellUtil.java 
spark@SparkSingleNode:~/Desktop$ java JavaShellUtil 
INFO:(hadoop,1)
spark@SparkSingleNode:~/Desktop$ cd /usr/local/hadoop/hadoop-2.6.0/

  步骤四:查看输出结果

spark@SparkSingleNode:/usr/local/hadoop/hadoop-2.6.0$ bin/hadoop fs -cat /WCout/par*
(hadoop,1)
(hello,5)
(storm,1)
(spark,1)
(hive,1)
(hbase,1)
spark@SparkSingleNode:/usr/local/hadoop/hadoop-2.6.0$

  成功!

关于

Shell 传递参数

http://www.runoob.com/linux/linux-shell-passing-arguments.html

  最后说的是,不局限于此,可以穿插在以后我们生产业务里的。作为调用它即可,非常实用!

本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6055518.html,如需转载请自行联系原作者

Hadoop概念学习系列之Java调用Shell命令和脚本,致力于hadoop/spark集群(三十六)...相关推荐

  1. java基础/java调用shell命令和脚本

    一.项目需求: 从某一机构获取证书,证书机构提供小工具,执行.sh脚本即可启动服务,本地调用该服务即可获取证书. 问题:linux服务器启动该服务,不能关闭.一旦关闭,服务即停止. 解决方案:java ...

  2. Java - 调用 Shell 命令和脚本

    介绍 有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本.而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRunt ...

  3. java调用shell命令并获取执行结果

    java调用shell命令并获取执行结果 使用到Process和Runtime两个类,返回值通过Process类的getInputStream()方法获取 [plain] view plain cop ...

  4. Java 调用 Shell 命令

    近日项目中有这样一个需求:系统中的外币资金调度完成以后,要将调度信息生成一个Txt文件,然后将这个Txt文件发送到另外一个系统(Kondor)中.生成文件自然使用OutputStreamWirter了 ...

  5. java操作Linux 调用shell命令,shell脚本

    1.问题 在最近做的项目当中,需要用Java调用基于python写的两个不同的模型运行并且得到实验结果: 1.在服务器上运行的文本识别模型 2.在本地Ubuntu中annacoda 虚拟环境中运行的影 ...

  6. Hadoop离线 day18 sqoop数据迁移和java执行shell命令

    sqoop数据迁移和java执行shell命令 3. sqoop数据迁移 3.1.概述 3.2.sqoop1与sqoop2架构对比 3.3.工作机制 3.4 .sqoop实战及原理 3.4.1 sqo ...

  7. java执行shell命令权限不够_Java调用shell脚本解决传参和权限问题的方法|chu

    1. java 执行shell java 通过 Runtime.getRuntime().exec() 方法执行 shell 的命令或 脚本,exec()方法的参数可以是脚本的路径也可以是直接的 sh ...

  8. [转载]JAVA调用Shell脚本

    FROM:http://blog.csdn.net/jj12345jj198999/article/details/11891701 在实际项目中,JAVA有时候需要调用C写出来的东西,除了JNI以外 ...

  9. java调用shell脚本_Java 执行Shell脚本指令

    一.介绍 有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本.而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRu ...

最新文章

  1. 谷歌浏览器Google Chrome和Adobe Flash Plugins插件安装问题
  2. TORCH MAXIMUM
  3. xenserver命令启动虚拟机
  4. postgresql 查看page, index, tuple 详细信息
  5. 记住要重置线程上下文类加载器
  6. WildFly上具有AngularJS的Java EE 7和Java WebSocket API(JSR 356)
  7. NetCore 统一处理 webapi 返回null 转为“”
  8. 数据异常值分析和处理
  9. 用vs2012的命令利用xsd文件生成对应的C#类,把xml的string类型映射到生成的类
  10. 190510每日一句
  11. workbench字符匹配错误_猪憨憨刷题笔记-LeetCode-10 正则表达式匹配
  12. 怎样让网站显示在 Google 搜索结果中?
  13. 数据库注入提权总结(一)
  14. 酉矩阵(unitary matrix)
  15. 【pytorch基础学习笔记】零基础速成,了解pytorch基础语法和应用
  16. 爬取虾米音乐flac高品质下载
  17. python系统开发_证券交易系统设计与开发
  18. springboot+mybatis 利用PageHelper插件分页,结果第二页的返回分页信息还是和第一页一样。
  19. Word利用Aurora插入伪代码
  20. OpenGL之基本图元连接方式

热门文章

  1. 重磅 | 2017年深度学习优化算法研究亮点最新综述火热出炉
  2. 来吧,用设计模式来干掉 if-else
  3. 科普:String hashCode 方法为什么选择数字31作为乘子
  4. 送Datawhale限量红包封面啦!
  5. 【廖雪峰python入门笔记】Unicode编码_UnicodeDecodeError处理
  6. 博士生宿舍条件太好,本科生因疫情暂住惊到结巴!网友:不然咱读个博?
  7. 清华优秀毕业生放弃留学上热搜!计算机系前10名中9人留校深造
  8. 一个函数打天下,einsum
  9. 来看看顶会大佬是如何研究计算机视觉的
  10. 如何用Python玩转比特币?(附源码)