首页 文章 精选 留言 我的

精选列表

搜索[学习],共10000篇文章
优秀的个人博客,低调大师

Hadoop Pig学习笔记(一) 各种SQL在PIG中实现

我这里以Mysql 5.1.x为例,Pig的版本是0.8 同时我将数据放在了两个文件,存放在/tmp/data_file_1和/tmp/data_file_2中.文件内容如下: tmp_file_1: Txt代码 zhangsan 23 1 lisi 24 1 wangmazi 30 1 meinv 18 0 dama 55 0 zhangsan231 lisi241 wangmazi301 meinv180 dama550 tmp_file_2: Txt代码 1 a 23 bb 50 ccc 30 dddd 66 eeeee 1a 23bb 50ccc 30dddd 66eeeee 1.从文件导入数据 1)Mysql (Mysql需要先创建表). CREATE TABLE TMP_TABLE(USER VARCHAR(32),AGE INT,IS_MALE BOOLEAN); CREATE TABLE TMP_TABLE_2(AGE INT,OPTIONS VARCHAR(50)); -- 用于Join LOAD DATA LOCAL INFILE '/tmp/data_file_1' INTO TABLE TMP_TABLE ; LOAD DATA LOCAL INFILE '/tmp/data_file_2' INTO TABLE TMP_TABLE_2; 2)Pig tmp_table = LOAD '/tmp/data_file_1' USING PigStorage('\t') AS (user:chararray, age:int,is_male:int); tmp_table_2= LOAD '/tmp/data_file_2' USING PigStorage('\t') AS (age:int,options:chararray); 2.查询整张表 1)Mysql SELECT * FROM TMP_TABLE; 2)Pig DUMP tmp_table; 3. 查询前50行 1)Mysql SELECT * FROM TMP_TABLE LIMIT 50; 2)Pig tmp_table_limit = LIMIT tmp_table 50; DUMP tmp_table_limit; 4.查询某些列 1)Mysql SELECT USER FROM TMP_TABLE; 2)Pig tmp_table_user = FOREACH tmp_table GENERATE user; DUMP tmp_table_user; 5. 给列取别名 1)Mysql SELECT USER AS USER_NAME,AGE AS USER_AGE FROM TMP_TABLE; 2)Pig tmp_table_column_alias = FOREACH tmp_table GENERATE user AS user_name,age AS user_age; DUMP tmp_table_column_alias; 6.排序 1)Mysql SELECT * FROM TMP_TABLE ORDER BY AGE; 2)Pig tmp_table_order = ORDER tmp_table BY age ASC; DUMP tmp_table_order; 7.条件查询 1)Mysql SELECT * FROM TMP_TABLE WHERE AGE>20; 2) Pig tmp_table_where = FILTER tmp_table by age > 20; DUMP tmp_table_where; 8.内连接Inner Join 1)Mysql SELECT * FROM TMP_TABLE A JOIN TMP_TABLE_2 B ON A.AGE=B.AGE; 2)Pig tmp_table_inner_join = JOIN tmp_table BY age,tmp_table_2 BY age; DUMP tmp_table_inner_join; 9.左连接Left Join 1)Mysql SELECT * FROM TMP_TABLE A LEFT JOIN TMP_TABLE_2 B ON A.AGE=B.AGE; 2)Pig tmp_table_left_join = JOIN tmp_table BY age LEFT OUTER,tmp_table_2 BY age; DUMP tmp_table_left_join; 10.右连接Right Join 1)Mysql SELECT * FROM TMP_TABLE A RIGHT JOIN TMP_TABLE_2 B ON A.AGE=B.AGE; 2)Pig tmp_table_right_join = JOIN tmp_table BY age RIGHT OUTER,tmp_table_2 BY age; DUMP tmp_table_right_join; 11.全连接Full Join 1)Mysql SELECT * FROM TMP_TABLE A JOIN TMP_TABLE_2 B ON A.AGE=B.AGE UNION SELECT * FROM TMP_TABLE A LEFT JOIN TMP_TABLE_2 B ON A.AGE=B.AGE UNION SELECT * FROM TMP_TABLE A RIGHT JOIN TMP_TABLE_2 B ON A.AGE=B.AGE; 2)Pig tmp_table_full_join = JOIN tmp_table BY age FULL OUTER,tmp_table_2 BY age; DUMP tmp_table_full_join; 12.同时对多张表交叉查询 1)Mysql SELECT * FROM TMP_TABLE,TMP_TABLE_2; 2)Pig tmp_table_cross = CROSS tmp_table,tmp_table_2; DUMP tmp_table_cross; 13.分组GROUP BY 1)Mysql SELECT * FROM TMP_TABLE GROUP BY IS_MALE; 2)Pig tmp_table_group = GROUP tmp_table BY is_male; DUMP tmp_table_group; 14.分组并统计 1)Mysql SELECT IS_MALE,COUNT(*) FROM TMP_TABLE GROUP BY IS_MALE; 2)Pig tmp_table_group_count = GROUP tmp_table BY is_male; tmp_table_group_count = FOREACH tmp_table_group_count GENERATE group,COUNT($1); DUMP tmp_table_group_count; 15.查询去重DISTINCT 1)MYSQL SELECT DISTINCT IS_MALE FROM TMP_TABLE; 2)Pig tmp_table_distinct = FOREACH tmp_table GENERATE is_male; tmp_table_distinct = DISTINCT tmp_table_distinct; DUMP tmp_table_distinct; 本文作者:佚名 来源:51CTO

优秀的个人博客,低调大师

《Scala机器学习》一一第1章 探索数据分析

第1章 探索数据分析 在本书深入研究复杂的数据分析方法之前,先来关注一些基本的数据探索任务,这些任务几乎会占据数据科学家80%~90%的工作时间。据估计,每年仅仅是数据准备、清洗、转换和数据聚合就有440亿美元的产值(Data Preparation in the Big Data Era by Federico Castanedo; Best Practices for Data Integration, O?Reilly Media, 2015)。即便如此,人们最近才开始把更多的时间花费在如何科学地开发最佳实践,以及为整个数据准备过程建立文档、教学材料的良好习惯上,这是一件令人惊讶的事情(Beautiful Data: The Stories Behind Elegant Data Solutions, edited by T

优秀的个人博客,低调大师

Android学习笔记之如何对应用进行单元测试

开发环境: Win XP + eclipse-jee-helios(版本号3.6) + ADT(版本10.0.1) + AndroidSDK(版本10); 模拟器及真机 测试环境:Android2.2 在Android软件的开发过程中,可以使用Junit测试框架。在Junit中可以得到组件,可以模拟发送事件和测试程序处理的正确性。 第一步:在新建项目中,创建待测试的业务类,在cn.hao.service包中,代码如下: package cn.hao.service; //业务类,待测试的两个方法 public class PersonaService { public void save(String username){ String sub = username.substring(6); } public int add(int a,int b){ return a+b; } } 说明:对于save()方法,如果参数为null,那么这个方法会发生错误;对add()方法,我们测试相加返回的相加结果是否正确。 第二步:为应用引进单元测试环境 在AndroidManifest.xml中加入如下代码: <uses-library android:name="android.test.runner"/> <instrumentation android:name="android.test.instrumentationTestRunner" android:targetPackage="cn.hao.JunitTest" android:label=" Testfor My App" /> 引入的位置如下: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.hao.JunitTest" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name="cn.hao.test.MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-library android:name="android.test.runner"/> </application> <instrumentation android:name="android.test.instrumentationTestRunner" android:targetPackage="cn.hao.JunitTest" android:label="App Test" /> </manifest> 说明:在项目中使用单元测试,就是检查程序及处理结果的正确性。 第三步:新建一个类,测试业务类,代码如下: package cn.hao.junit; import junit.framework.Assert; import cn.hao.service.PersonaService; import android.test.AndroidTestCase; public class PersonServiceTest extends AndroidTestCase { public void testSave() throws Exception { PersonaService service = new PersonaService();//new出测试对象 service.save(null); } public void testAdd() throws Exception { PersonaService service = new PersonaService(); int actual = service.add(1, 2); Assert.assertEquals(3, actual); } } 注意:该类需继承单元测试框架父类android.test.AndroidTestCase类,测试方法最好是抛出异常给测试框架。方法Assert.assertEquals(3, actual)中参数3是期望(理论上)返回的果,actual是实际上返回的结果。 第四步:运行测试类 在大纲OutLine视图中,右击测试方法->Run As->Android Junit Test,会将项目自动部署到模拟器上,测试的结果会以颜色的形式显示,绿色表示方法正确,否则该方法不正确,Eclipse会给出详细的说明,根据帮助文档可以查看相应的错误信息。 如测试上述testSave()方法时,会给出如下提示: 当然,save()从第六位开始取子字符串,但是该方法现在的参数为null,会发生空指针异常。 最新内容请见作者的GitHub页:http://qaseven.github.io/

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册