07 2016 档案

摘要:一、wc wc命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。 测试文件内容: 1.1最基本的用法 其中7代表行数 8是单词书,一个单词被定义为由空格、制表符或者换行符分割的字符串 70是字节数 1.2-l计算行数 1.3-w计算单词数 1.4-c计算字节数 1.5-L打印最长 阅读全文
posted @ 2016-07-31 12:09 dongdone 阅读(606) 评论(0) 推荐(0) 编辑
摘要:声明:下面介绍的只是命令的常用选项,如果需要详细了解命令全部细节,需要参考其他的资料。 一、cut cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。 -d:自定义分隔符,默认分隔符是制表符。 -f:指定显示哪个区域 阅读全文
posted @ 2016-07-31 01:23 dongdone 阅读(1102) 评论(0) 推荐(0) 编辑
摘要:执行结果: 阅读全文
posted @ 2016-07-29 17:20 dongdone 阅读(245) 评论(0) 推荐(0) 编辑
摘要:使用wait、notify方法实现线程间的通信(注意这两个方法都是object的类的方法,换句话说java为所有的对象都提供了这两个方法) 1.wait和notify必须配合synchronized关键字使用 2.wait方法释放锁,notify方法不释放锁 示例1: 上述代码实现了这样的功能:t1 阅读全文
posted @ 2016-07-29 16:02 dongdone 阅读(660) 评论(0) 推荐(0) 编辑
摘要:(支持原创)本篇文章非原创,原文章地址: http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可 阅读全文
posted @ 2016-07-29 14:03 dongdone 阅读(360) 评论(0) 推荐(0) 编辑
摘要:luigi的执行和触发模型非常简单。 一、luigi的执行模型 当你执行一个luigi的工作流的时候,worker调度所有的task,并且执行task在一个单独的进程中。 这种scheme最大的好处是容易调试,因为所有的task都在单独的进程中运行。你可以使用crontab的方式来触发他。 阅读全文
posted @ 2016-07-29 12:57 dongdone 阅读(624) 评论(0) 推荐(0) 编辑
摘要:--local-scheduler一般用在开发阶段,这在一个产品中是不建议这样使用的。使用中央调度器有两个目的: 保证两个相同的task不会同时运行两次 提供一个可视化的界面 注意:中央调度器并不会帮助你执行任何任务或者帮助你使得你的任务更加并行。 一、luigid serevr 1.1运行luig 阅读全文
posted @ 2016-07-29 11:13 dongdone 阅读(855) 评论(0) 推荐(0) 编辑
摘要:最简单去运行一个luigi task的方式是通过luigi命令行工具。 示例代码: 在命令行上运行: 或者可以选择这种方式运行: 注意:如果一个参数的名字中含有'_',在命令行中你需要替代为'-'。例如MyTask有一个参数名字是'my_parameter',你需要这么赋值: luigi --mod 阅读全文
posted @ 2016-07-29 10:46 dongdone 阅读(581) 评论(0) 推荐(0) 编辑
摘要:parameter就好比是一个task的构造方法。luigi要求你在类的scope上定义parameter。 如下面就是一个定义parameter的例子: 对于上述的parameter你可以使用这样的方式来初始化: DailyReport(datetime.date(2012,5,10))或者仅仅使 阅读全文
posted @ 2016-07-28 11:36 dongdone 阅读(1268) 评论(0) 推荐(0) 编辑
摘要:先看下面的代码: 执行代码,会发现这个程序一直会运行,而不会停止。 因为在主线程中创建了rt对象,并且调用了run方法,启动了另一个线程,这个线程会复制isRunnning变量的副本到工作内存空间。 所以当主线程对rt对象的属性isRunning做了更改时,对其他线程而言是无效的,因为其他的线程都有 阅读全文
posted @ 2016-07-27 18:00 dongdone 阅读(212) 评论(0) 推荐(0) 编辑
摘要:一、改变了锁对象 本来打算让t1先执行,t1执行完成之后t2再执行,但是t1线程将锁对象改变了,所以可以说t1线程获取的是字符串“lock”的对象锁,t2线程获取的是字符串“change lock”的对象锁。 二、死锁问题 三、修改锁对象的属性 四、对象锁与类所 五、使用synchronized代码 阅读全文
posted @ 2016-07-27 15:58 dongdone 阅读(319) 评论(0) 推荐(1) 编辑
摘要:上面的两个例子比较简单,可以复制代码查看运行结果即可。 阅读全文
posted @ 2016-07-27 15:26 dongdone 阅读(571) 评论(0) 推荐(1) 编辑
摘要:sqoop job: Work with saved jobs 就是将sqoop的某条语句保存为一个job 1.把person表导入到HDFS上,可以使用下面的语句 2.我们现在要把上面的语句保存成为一个job 3.查看可用的job 4.执行person_job来完成导入 5.执行person_jo 阅读全文
posted @ 2016-07-27 14:03 dongdone 阅读(3564) 评论(0) 推荐(0) 编辑
摘要:eval的作用:Evaluate a SQL statement and display the results,也就是说eval像是一个数据库的客户端工具。 一、使用eval来查询表 二、使用eval来插入数据 其中-e选项和--query选项是一样的 阅读全文
posted @ 2016-07-27 13:34 dongdone 阅读(4593) 评论(0) 推荐(0) 编辑
摘要:task是代码执行的地方。task通过target互相依赖。 下面是一个典型的task的大纲视图。 一、Task.requires requires方法用来指定本task的依赖的其他task对象,依赖的task对象甚至可以是同一个class的对象,下面是一个例子: 上述的DailyReport ta 阅读全文
posted @ 2016-07-27 11:44 dongdone 阅读(3023) 评论(0) 推荐(1) 编辑
摘要:上述的代码会发生脏读的问题,解决的办法是在setValue的方法上加synchronized关键字 读取和设置的数据必须保证是一致的。 这和数据库的一致性原理是一样的。 阅读全文
posted @ 2016-07-26 23:29 dongdone 阅读(286) 评论(0) 推荐(0) 编辑
摘要:一、codegen工具的使用 其中bindir参数指明了生成的class文件,jar包的输出目录 sqoop在进行每一次的导出任务时,都会调用codegen,生成一个java文件,并编译打包成jar,供mapreduce使用。这个java文件包装了一系列的对导出数据的访问接口,我们可以尝试通过对这个 阅读全文
posted @ 2016-07-26 22:49 dongdone 阅读(1671) 评论(0) 推荐(0) 编辑
摘要:sqoop的导出工具是把HDFS上文件中的数据导出到mysql中 mysql中的表 现在在linux上创建一个文件,并把这个文件上传到hdfs上 一、export-dir 使用export-dir来指定导出的目录,会导出该目录下的所有文件。 最终的效果可以在mysql中的表体现: 二、插入中文乱码问 阅读全文
posted @ 2016-07-26 18:04 dongdone 阅读(3853) 评论(0) 推荐(0) 编辑
摘要:1.hive-table 从mysql导入数据到hive表中,可以使用--hive-table来指定hive的表名,不指定hive表名,则hive表名与mysql表名保持一致。 hive中的表结构是: 2.create-hive-table工具 create-hive-table工具是依据mysql 阅读全文
posted @ 2016-07-26 15:59 dongdone 阅读(5796) 评论(0) 推荐(0) 编辑
摘要:luigi提供了两个基本单元来构造一个工作流,这两个基本单元分别是Task和Target。这两个单元都是抽象类,我们实现他们中的某些方法就可以了。除了这两个基本单元,还有一个重要的概念是Prameter,它可以控制task的运行方式。 一、target target对应的是磁盘上的一个文件,或者是H 阅读全文
posted @ 2016-07-26 11:52 dongdone 阅读(1109) 评论(0) 推荐(0) 编辑
摘要:--local-scheduler的方式只适用于开发调试阶段,当你真正要把程序部署到一个产品时,我们推荐使用luigid服务。 使用luigid服务不但能提供锁服务(防止一个任务被多个进程重复执行),并且还提供了一个友好的可视界面。 一、如何使用luigid 1.1执行luigid 首先你在一个终端 阅读全文
posted @ 2016-07-26 10:49 dongdone 阅读(1029) 评论(0) 推荐(0) 编辑
摘要:一、算术和操作符重载 a + b 是如下方法的简写: a.+(b) 在scala中你可以使用任何符号来为方法命名。比如BigInt类就定义了一个/%的方法,该方法返回一个对偶,对偶的内容是除法操作得到的商和余数。 通常来说,你可以用 a 方法 b 作为以下代码的简写 a.方法(b) 这里的方法是一个 阅读全文
posted @ 2016-07-25 17:19 dongdone 阅读(541) 评论(0) 推荐(0) 编辑
摘要:一、luigi配置文件的加载顺序 /etc/luigi/client.cfg luigi.cfg LUIGI_CONFIG_PATH环境变量 二、配置文件分节 配置文件被分为了多个section,每一个控制着不同方面的配置 三、利用配置文件来给参数赋值 如果你有这样的一个类: 你可以使用配置文件的方 阅读全文
posted @ 2016-07-25 15:44 dongdone 阅读(1199) 评论(0) 推荐(0) 编辑
摘要:一、AggregateArtistsHadoop 实现的功能和AggregateArtists类似,需要注意的是: luigi.contrib.hadoop.JobTask不需要你实现run方法,需要你实现mapper和reducer方法。mapper和combiner需要yield包含两个元素的t 阅读全文
posted @ 2016-07-25 15:15 dongdone 阅读(1219) 评论(0) 推荐(0) 编辑
摘要:一、luigi介绍 luigi是基于python语言的,可帮助建立复杂流式批处理任务管理系统。这些批处理作业典型的有hadoop job,数据库数据的导入与导出,或者是机器学习算法等等。 luigi的github:https://github.com/spotify/luigi 目前已经有一些抽象层 阅读全文
posted @ 2016-07-25 11:38 dongdone 阅读(3645) 评论(0) 推荐(0) 编辑
摘要:一、REPL scala解释器读到一个表达式,对它进行求值,将它的打印出来,接着再继续读下一个表达式。这个过程被称作 读取-打印-循环,即REPL。 从技术上讲,scala程序并不是一个解释器。实际发生的是,你输入的内容被快速的编译成字节码,然后这段字节码交由java虚拟机执行。正因如此,大多数sc 阅读全文
posted @ 2016-07-24 23:33 dongdone 阅读(1132) 评论(0) 推荐(0) 编辑
摘要:1.1hive-import参数 使用--hive-import就可以将数据导入到hive中,但是下面这个命令执行后会报错,报错信息如下: sqoop import --connect jdbc:mysql://localhost:3306/test --username root --passwo 阅读全文
posted @ 2016-07-22 18:24 dongdone 阅读(31226) 评论(0) 推荐(0) 编辑
摘要:一、sqoop作用? sqoop是一个数据交换工具,最常用的两个工具是导入导出。 导入导出的参照物是hadoop,向hadoop导数据就是导入。 二、sqoop的版本? sqoop目前有两个版本,1.4.X为sqoop1;1.99.X为sqoop2。两个版本不兼容。 三、使用sqoop列出mysql 阅读全文
posted @ 2016-07-22 15:57 dongdone 阅读(30816) 评论(8) 推荐(0) 编辑
摘要:hbase提供了类似于触发器的组件observer,类似于存储过程的endpoint。 hbase中的observer分别三类,MasterObserver、RegionObserver、WALObserevr 使用java代码也可以达到相同的效果,但是服务器端的observer相对是比较高效的 一 阅读全文
posted @ 2016-07-21 15:17 dongdone 阅读(2244) 评论(0) 推荐(0) 编辑
摘要:需求:对hbase的一张表进行拷贝 一、table1的内容如下 二、现在将table1拷贝 hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=table2 table1 三、scan table2中的数据 阅读全文
posted @ 2016-07-21 11:41 dongdone 阅读(482) 评论(0) 推荐(0) 编辑
摘要:需求:将HDFS上的文件中的数据导入到hbase中 实现上面的需求也有两种办法,一种是自定义mr,一种是使用hbase提供好的import工具 一、hdfs中的数据是这样的 每一行的数据是这样的id name age gender birthday 二、自定义mr 2.1打包运行 首先在hbase中 阅读全文
posted @ 2016-07-21 11:00 dongdone 阅读(18987) 评论(0) 推荐(2) 编辑
摘要:本次操作的hbase的t1表的数据是: 需求1:查询rk为数字的全部记录 需求2:查询以字母a开头的数据 阅读全文
posted @ 2016-07-20 16:27 dongdone 阅读(2082) 评论(0) 推荐(0) 编辑
摘要:一、目的 把hbase中某张表的数据导出到hdfs上一份。 实现方式这里介绍两种:一种是自己写mr程序来完成,一种是使用hbase提供的类来完成。 二、自定义mr程序将hbase数据导出到hdfs上 2.1首先看看hbase中t1表中的数据: 2.2mr的代码如下: 比较重要的语句是 job.set 阅读全文
posted @ 2016-07-20 11:55 dongdone 阅读(14588) 评论(0) 推荐(0) 编辑
摘要:在map或者reduce函数中使用System.out.println打印的信息沾满查看呢? 步骤1:启动history server /usr/local/hadoop-2.6.0/sbin/mr-jobhistory-daemon.sh start historyserver 步骤2:使用htt 阅读全文
posted @ 2016-07-20 11:19 dongdone 阅读(422) 评论(0) 推荐(0) 编辑
摘要:一、简单介绍 hive的元数据保存在metastore里面,真实的数据一般位于hdfs中,可以通过hql来对数据进行分析。hbase中的数据也是存放在hdfs上的,可不可以使用hive来分析hbase中的数据呢? 二、hive表到hbase表的映射 2.1hbase表t1的结构和其中的数据如下图 2 阅读全文
posted @ 2016-07-18 15:10 dongdone 阅读(6051) 评论(0) 推荐(0) 编辑
摘要:一、phoenix的简介 hbase的java api或者其语法很难用,可以认为phoenix是一个中间件,提供了访问hbase的另外的语法。 二、配置phoenix和hbase 1.下载 phoenix的官网是:http://phoenix.apache.org/,用户可以到该网址找到对应hbas 阅读全文
posted @ 2016-07-18 13:33 dongdone 阅读(1963) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示