将数据加载到Hadoop中

时间:2015-01-13 21:57:52

标签: hadoop mapreduce apache-pig sqoop flume

我正在尝试找出这两个问题的正确答案,这两个问题都涉及将数据加载到我在网上找到的Hadoop,作为我研究Hadoop开发的材料和案例研究的一部分。

第一个问题是:

您的OLPT数据库中有用户配置文件记录,您希望将这些用户配置文件记录加入已经存入Hadoop文件系统的Web日志中。您将如何获得这些用户记录?

一个。 HDFS命令

B中。 Pig LOAD命令

℃。 Sqoop导入

d。 Hive LOAD DATA命令

电子。用Flume剂摄取

F。使用Hadoop Streaming进行摄取

我发现不同的资源表明不同的答案是正确答案(B / C)

第二个问题是:

您希望详细了解用户如何浏览您的公共网站,例如在下订单之前访问的网页。您有一个由200个Web服务器托管您的网站的服务器场。您将如何收集这些数据以供分析?

一个。使用Flume将服务器Web日志提取到HDFS中。

B中。编写MapReduce作业,使用映射器的Web服务器,并减少Hadoop集群节点。

℃。使用Sqoop将所有用户从OLTP数据库的点击导入Hadoop。

d。使用Hadoop Streaming将这些点击流引入Hadoop。

电子。从Web服务器中对Weblog进行采样,使用curl将它们复制到Hadoop中。

这里建议的答案是A或B,具体取决于来源......

修改

这是对答案B的解释,我发现这让我对答案三思而后行:

用于解析Weblog的Hadoop MapReduce以下是使用Hadoop MapReduce解析日志文件的步骤:

使用此Hadoop命令将日志文件加载到HDFS位置:hadoop fs -put

Opencsv2.3.jar框架用于解析日志记录。

下面是Mapper程序,用于从HDFS位置解析日志文件。

public static class ParseMapper     
   extends Mapper<Object, Text, NullWritable,Text > {

   private Text word = new Text();

   public void map(Object key, Text value, Context context)
       throws IOException, InterruptedException {

      CSVParser parse = new CSVParser(' ','\"');  
      String sp[]=parse.parseLine(value.toString()); 
      int spSize=sp.length;    
      StringBuffer rec= new StringBuffer();

      for(int i=0;i<spSize;i++){    
         rec.append(sp[i]);    

         if(i!=(spSize-1))    
          rec.append(",");    
      }    
   word.set(rec.toString());    
   context.write(NullWritable.get(), word);   
   }    
} 

&LT; \编辑&gt;

很高兴得到这些问题的绝对答案,Gday,D。

2 个答案:

答案 0 :(得分:2)

  

问题1:

     

答案:C

     

说明:     您需要加入用户个人资料记录和博客。博客是   已经摄入HDFS.So以便加入weblogs与用户   配置文件,我们需要将用户配置文件也带入HDFS.User配置文件   驻留在OLPT数据库中,以便将其导入HDFS我们需要帮助    SQOOP


  

问题2:

     

答案:A

     

说明:    您需要收集托管您的Web服务器的信息   网站。你有一个由200个网络服务器托管你的农场   website.so要将它们带到HDFS,你需要 FLUME 的帮助。

答案 1 :(得分:1)

1是C. Sqoop是从数据库摄取到hdfs的方法。它是为此目的而构建和优化的。 2是A.同样,实时收集大量博客是一个常见的Flume用例。