小编rez*_*eza的帖子

将远程文件放入hadoop而不将其复制到本地磁盘

我正在编写一个shell脚本,一旦生成数据就将数据放入hadoop.我可以ssh到我的主节点,将文件复制到那里的文件夹,然后将它们放入hadoop.我正在寻找一个shell命令来摆脱将文件复制到主节点上的本地磁盘.为了更好地解释我需要什么,在下面你可以找到我到目前为止所拥有的:

1)将文件复制到主节点的本地磁盘:

scp test.txt username@masternode:/folderName/
Run Code Online (Sandbox Code Playgroud)

我已经使用密钥设置了SSH连接.因此,不需要密码来执行此操作.

2)我可以使用ssh远程执行hadoop put命令:

ssh username@masternode "hadoop dfs -put /folderName/test.txt hadoopFolderName/"
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是如何将这两个步骤组合成一个并跳过masterNode本地磁盘上的文件的本地副本.

谢谢

换句话说,我想以我能够的方式管理几个命令

unix ssh hadoop copying piping

34
推荐指数
2
解决办法
5万
查看次数

如何在远程计算机上将文件放入HDFS时指定用户名

我有一个Hadoop集群设置,并在一个通用的默认用户名"user1"下工作.我想将文件放入远程机器中的hadoop,而远程机器不是hadoop集群的一部分.我在远程计算机上配置了hadoop文件

hadoop dfs -put file1 ...
Run Code Online (Sandbox Code Playgroud)

从远程计算机调用,它将file1放在Hadoop集群上.

唯一的问题是我在远程计算机上以"user2"身份登录,并且没有给出我期望的结果.实际上,上述代码只能在远程机器上执行:

hadoop dfs -put file1 /user/user2/testFolder
Run Code Online (Sandbox Code Playgroud)

但是,我真正想要的是能够将文件存储为:

hadoop dfs -put file1 /user/user1/testFolder
Run Code Online (Sandbox Code Playgroud)

如果我尝试运行最后一个代码,hadoop会因访问权限而抛出错误.无论如何我可以在hadoop dfs命令中指定用户名吗?

我正在寻找类似的东西:

hadoop dfs -username user1 file1 /user/user1/testFolder
Run Code Online (Sandbox Code Playgroud)

谢谢

hadoop username hdfs

31
推荐指数
3
解决办法
5万
查看次数

加入Mapreduce/Hadoop中的两个数据集

有谁知道如何在Hadoop中的两个数据集之间实现Natural-Join操作?

更具体地说,这就是我需要做的事情:

我有两组数据:

  1. 存储为(tile_number,point_id:point_info)的点信息,这是1:n键值对.这意味着对于每个tile_number,可能有几个point_id:point_info

  2. 存储为(tile_number,line_id:line_info)的行信息,这也是1:m键值对,并且对于每个tile_number,可能存在多个line_id:line_info

如您所见,tile_numbers在两个数据集之间是相同的.现在我真正需要的是根据每个tile_number连接这两个数据集.换句话说,对于每个tile_number,我们有n个point_id:point_info和m line_id:line_info.我想要做的是将所有对point_id:point_info连接到每个tile_number的所有行line_id:line_info


为了澄清,这是一个例子:

对于点对:

(tile0, point0)
(tile0, point1)
(tile1, point1)
(tile1, point2)
Run Code Online (Sandbox Code Playgroud)

对于线对:

(tile0, line0)
(tile0, line1)
(tile1, line2)
(tile1, line3)
Run Code Online (Sandbox Code Playgroud)

我想要的是如下:

对于瓦片0:

 (tile0, point0:line0)
 (tile0, point0:line1)
 (tile0, point1:line0)
 (tile0, point1:line1)
Run Code Online (Sandbox Code Playgroud)

对于瓷砖1:

 (tile1, point1:line2)
 (tile1, point1:line3)
 (tile1, point2:line2)
 (tile1, point2:line3)
Run Code Online (Sandbox Code Playgroud)

distributed hadoop join mapreduce

10
推荐指数
1
解决办法
2万
查看次数

如何在Android中从外部库调用Activity方法

在我的主要活动中,我有一个方法需要从辅助java类调用.我使用了辅助java类的构造函数来接收对主Activity的引用.然后我尝试使用此引用从辅助java类的主体调用该方法.但java不通过传递引用识别该方法?

我的主要活动如下:

public class MainActivity extends Activity{

    public void onCreate(){

        TestClass mTestClass = new TestClass(this);
    }

   public testMethod(){      
       // do some work here
   }
}
Run Code Online (Sandbox Code Playgroud)

现在,在我的TestClass.java中,我收到了对MainActivity的引用:

public class TestClass{

    public TestClass(Activity mActivity){
        //Android/Java doesn't recoginze testMethod here???? 
        mActivity.testMethod();      
    }
}
Run Code Online (Sandbox Code Playgroud)

我一直试图解决这个问题几天没有成功.我迫切需要你的帮助,并感谢任何建议!

PS TestClass将充当一个库,每个人都可以从他们的Android应用程序中调用它.换句话说,我提供TestClass作为库.然后,用户实现在满足某些条件时将执行的方法的内容.因此,我需要通过用户传递给我的库类的引用来调用该特定方法(将由用户在自己的Activity中定义).

android call android-activity

0
推荐指数
1
解决办法
3251
查看次数