首页 文章 精选 留言 我的

精选列表

搜索[多步执行],共10000篇文章
优秀的个人博客,低调大师

Hadoop 利用FileSystem API 执行hadoop文件读写操作

因为HDFS不同于一般的文件系统,所以Hadoop提供了强大的FileSystem API来操作HDFS. 核心类是FSDataInputStream和FSDataOutputStream 读操作: 我们用FSDataInputStream来读取HDFS中的指定文件(第一个实验),另外我们还演示了这个类的定位文件位置的能力,然后从指定位置开始读取文件(第二个实验)。 代码如下: /* */ packagecom.charles.hadoop.fs; importjava.net.URI; importorg.apache.hadoop.conf.Configuration; importorg.apache.hadoop.fs.FSDataInputStream; importorg.apache.hadoop.fs.FileSystem; importorg.apache.hadoop.fs.Path; importorg.apache.hadoop.io.IOUtils; /** * *Description:查看Hadoop文件系统中的文件,利用hadoopFileSystem接口中的FSDataInputStream *FSDataInputStream还具有流定位的能力,可以从文件的任意位置开始读取 * *@authorcharles.wang *@createdMay26,201212:28:49PM * */ publicclassReadFromHadoopFileSystem{ /** *@paramargs */ publicstaticvoidmain(String[]args)throwsException{ //TODOAuto-generatedmethodstub //第一个参数传递进来的是hadoop文件系统中的某个文件的URI,以hdfs://ip的theme开头 Stringuri=args[0]; //读取hadoop文件系统的配置 Configurationconf=newConfiguration(); conf.set("hadoop.job.ugi","hadoop-user,hadoop-user"); //FileSystem是用户操作HDFS的核心类,它获得URI对应的HDFS文件系统 FileSystemfs=FileSystem.get(URI.create(uri),conf); FSDataInputStreamin=null; try{ //实验一:输出全部文件内容 System.out.println("实验一:输出全部文件内容"); //让FileSystem打开一个uri对应的FSDataInputStream文件输入流,读取这个文件 in=fs.open(newPath(uri)); //用Hadoop的IOUtils工具方法来让这个文件的指定字节复制到标准输出流上 IOUtils.copyBytes(in,System.out,50,false); System.out.println(); //实验二:展示FSDataInputStream文件输入流的流定位能力,用seek进行定位 System.out.println("实验二:展示FSDataInputStream文件输入流的流定位能力,用seek进行定位"); //假如我们要吧文件输出3次 //第一次输入全部内容,第二次输入从第20个字符开始的内容,第3次输出从第40个字符开始的内容 for(inti=1;i<=3;i++){ in.seek(0+20*(i-1)); System.out.println("流定位第"+i+"次:"); IOUtils.copyBytes(in,System.out,4096,false); } }finally{ IOUtils.closeStream(in); } } } 我们传入的命令行参数为我们要读的HDFS文件系统中某文件的URI: hdfs://192.168.129.35:9000/user/hadoop-user/textfile.txt 最终输出结果为: 实验一:输出全部文件内容 Thisisatextfileeditedbycharlestotestthehadoopdistributedfilesystem'sfeatures. 实验二:展示FSDataInputStream文件输入流的流定位能力,用seek进行定位 流定位第1次: Thisisatextfileeditedbycharlestotestthehadoopdistributedfilesystem'sfeatures. 流定位第2次: editedbycharlestotestthehadoopdistributedfilesystem'sfeatures. 流定位第3次: 写操作: 我们用FSDataOutputStream来写文件到HDFS系统中,或者说从本地文件系统中复制文件到HDFS文件系统中。其中这个本地文件系统是相对于运行这段java代码的宿主系统。 代码如下: /* */ packagecom.charles.hadoop.fs; importjava.io.BufferedInputStream; importjava.io.FileInputStream; importjava.io.InputStream; importjava.io.OutputStream; importjava.net.URI; importorg.apache.hadoop.conf.Configuration; importorg.apache.hadoop.fs.FileSystem; importorg.apache.hadoop.fs.Path; importorg.apache.hadoop.io.IOUtils; importorg.apache.hadoop.util.Progressable; /** * *Description:这个类展示如何将一个文件从本地文件系统复制到HDFS * *@authorcharles.wang *@createdMay26,20121:00:39PM * */ publicclassWriteToHadoopFileSystem{ /** *@paramargs */ publicstaticvoidmain(String[]args)throwsException{ //TODOAuto-generatedmethodstub //两个参数分别是本地文件系统的的输入文件路径和HDFS中的输出文件位置 //如果这段代码最终运行在Hadoop所在的服务器上,那么本地文件系统是相对于那台服务器的本地文件系统 //如果这段代码运行在我们WindowsPC上,那么本地文件系统是这台WindowPC的文件系统 StringlocalSrc=args[0]; Stringdst=args[1]; //因为本地文件系统是基于java.io包的,所以我们创建一个本地文件输入流 InputStreamin=newBufferedInputStream(newFileInputStream(localSrc)); //读取hadoop文件系统的配置 Configurationconf=newConfiguration(); conf.set("hadoop.job.ugi","hadoop-user,hadoop-user"); //仍然用FileSystem和HDFS打交道 //获得一个对应HDFS目标文件的文件系统 FileSystemfs=FileSystem.get(URI.create(dst),conf); //创建一个指向HDFS目标文件的输出流 OutputStreamout=fs.create(newPath(dst)); //用IOUtils工具将文件从本地文件系统复制到HDFS目标文件中 IOUtils.copyBytes(in,out,4096,true); System.out.println("复制完成"); } } 我们传入2个命令行参数,一个是本地文件系统中被复制的文件路径,第二个要复制到的HDFS文件系统中的目标文件路径: copyMe.txt hdfs://192.168.129.35:9000/user/hadoop-user/copyMe.txt 我们去文件系统中去检查文件,果然文件被复制上去了: 打开这个目标文件,果然内容与预期一样: 本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/878921,如需转载请自行联系原作者

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

android页面切换和常用方法的执行顺序

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 package com.example.android.active; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; /** *@deprecatedActivity生命周期中的7大方法和四中状态 **/ public class MainActivity extends Activity{ /** *Activity被创建时调用 *可以在该方法中初始化UI组件 *该方法调用完毕会调用onStart()方法 **/ @Override protected void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println( "MainActivity-onCreate()" ); } /** *被onCreate()调用,此时activity课件,但不能被操作 *该方法会调用onResume()或者onStop()方法 **/ @Override protected void onStart(){ //TODOAuto-generatedmethodstub super .onStart(); System.out.println( "MainActivity-onStart()" ); } /** *当一个处于stop状态下的activity重新获取焦点时调用 *该方法会调用onStart方法 * * **/ @Override protected void onRestart(){ //TODOAuto-generatedmethodstub super .onRestart(); System.out.println( "MainActivity-onRestart()" ); } /** *被onStart()调用,此时activity可见可交互, *此时,activity处于激活(Running)状态 * **/ @Override protected void onResume(){ super .onResume(); System.out.println( "MainActivity-onResume()" ); } /** *当activity处于运行状态,被其他activity覆盖(位完全覆盖式调用) *此时activity处于暂停状态,失去焦点,不可操作 *此状态下activity可以被kill掉 *如果当用户返回该activity,那么会调用onResume方法,重新获取焦点 **/ @Override protected void onPause(){ //TODOAuto-generatedmethodstub super .onPause(); System.out.println( "MainActivity-onPause()" ); } /** *当activity完全被另一个activity覆盖时被调用 *此时activity进入停止状态,完全不可见 *此状态下activity可以被kill掉 *当用户重新回到改activity,会调用restart方法 * * **/ @Override protected void onStop(){ //TODOAuto-generatedmethodstub super .onStop(); System.out.println( "MainActivity-onStop()" ); } /** *当activity调用了finish方法,或被系统销毁时被调用 *可以在该方法中进行资源释放的工作 **/ @Override protected void onDestroy(){ //TODOAuto-generatedmethodstub super .onDestroy(); System.out.println( "MainActivity-onDestory()" ); } @Override public boolean onCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. getMenuInflater().inflate(R.menu.main,menu); return true ; } /** *通过这个方法跳转到activity2界面*/ public void gotoActivity2(Viewv){ //创建一个意图 Intentintent= new Intent( this ,MainActivity2. class ); //启动另一个activity startActivity(intent); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 package com.example.android.active; import android.app.Activity; import android.os.Bundle; import android.view.Menu; public class MainActivity2 extends Activity{ /** *Activity被创建时调用 *可以在该方法中初始化UI组件 *该方法调用完毕会调用onStart()方法 **/ @Override protected void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println( "MainActivity2-onCreate()" ); } /** *被onCreate()调用,此时activity课件,但不能被操作 *该方法会调用onResume()或者onStop()方法 **/ @Override protected void onStart(){ //TODOAuto-generatedmethodstub super .onStart(); System.out.println( "MainActivity2-onStart()" ); } /** *当一个处于stop状态下的activity重新获取焦点时调用 *该方法会调用onStart方法 * * **/ @Override protected void onRestart(){ //TODOAuto-generatedmethodstub super .onRestart(); System.out.println( "MainActivity2-onRestart()" ); } /** *被onStart()调用,此时activity可见可交互, *此时,activity处于激活(Running)状态 * **/ @Override protected void onResume(){ super .onResume(); System.out.println( "MainActivity2-onResume()" ); } /** *当activity处于运行状态,被其他activity覆盖(位完全覆盖式调用) *此时activity处于暂停状态,失去焦点,不可操作 *此状态下activity可以被kill掉 *如果当用户返回该activity,那么会调用onResume方法,重新获取焦点 **/ @Override protected void onPause(){ //TODOAuto-generatedmethodstub super .onPause(); System.out.println( "MainActivity2-onPause()" ); } /** *当activity完全被另一个activity覆盖时被调用 *此时activity进入停止状态,完全不可见 *此状态下activity可以被kill掉 *当用户重新回到改activity,会调用restart方法 * * **/ @Override protected void onStop(){ //TODOAuto-generatedmethodstub super .onStop(); System.out.println( "MainActivity2-onStop()" ); } /** *当activity调用了finish方法,或被系统销毁时被调用 *可以在该方法中进行资源释放的工作 **/ @Override protected void onDestroy(){ //TODOAuto-generatedmethodstub super .onDestroy(); System.out.println( "MainActivity2S-onDestory()" ); } @Override public boolean onCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. getMenuInflater().inflate(R.menu.main,menu); return true ; } } 文件配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <application android:allowBackup= "true" android:icon= "@drawable/ic_launcher" android:label= "@string/app_name" android:theme= "@style/AppTheme" > <activity android:name= "com.example.android.active.MainActivity" android:label= "@string/app_name" > <intent-filter> <actionandroid:name= "android.intent.action.MAIN" /> <categoryandroid:name= "android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name= ".MainActivity2" > </activity> </application> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <RelativeLayoutxmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/tools" android:layout_width= "match_parent" android:layout_height= "match_parent" android:paddingBottom= "@dimen/activity_vertical_margin" android:paddingLeft= "@dimen/activity_horizontal_margin" android:paddingRight= "@dimen/activity_horizontal_margin" android:paddingTop= "@dimen/activity_vertical_margin" tools:context= ".MainActivity" > <TextView android:id= "@+id/textView1" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "@string/hello_world" /> <Button android:id= "@+id/button1" style= "?android:attr/buttonStyleSmall" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:layout_below= "@+id/textView1" android:layout_marginLeft= "15dp" android:layout_marginTop= "32dp" android:layout_toRightOf= "@+id/textView1" android:text= "启动第二个activity" android:onClick= "gotoActivity2" /> </RelativeLayout> 运行项目 点击启动第二个activity后 点击返回按钮后 本文转自 matengbing 51CTO博客,原文链接:http://blog.51cto.com/matengbing/1880918

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

Hadoop设置任务执行队列及优先级

Hive设置方法: SET mapreduce.job.queuename=root.up; SET mapreduce.job.priority=HIGH; set tez.queue.name=cmbi; ---- 设置引擎 sethive.execution.engine=mr; sethive.execution.engine=spark; sethive.execution.engine=tez; ---- Pig设置方法: SET mapreduce.job.queuename root.up; SET mapreduce.job.priority HIGH; MapReduce设置方法: Hadoopjar app.jar -D mapreduce.job.queuename=root.up -D mapreduce.job.priority=HIGH 本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/p/6958946.html,如需转载请自行联系原作者。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册