集成hadoop、revo scaler和hive

jgovgodb  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(314)

我需要将配置单元表中的数据提取到csv文件中,并在revoscaler中使用它。目前,我们从配置单元中提取数据并手动将其放入一个文件中,然后在unix文件系统中使用它进行临时分析,然而,要求将结果直接重新定向到hdfs位置并从那里使用revoscaler?
我该怎么做?或者我需要建立什么样的联系。

11dmarpk

11dmarpk1#

如果我正确理解您的问题,您可以使用revoscaler odbc连接来导入配置单元表,并从中进行进一步的分析。
下面是使用hortonworks提供的odbc驱动程序的示例:

OdbcConnString <- "DSN=Sample Hortonworks Hive DSN"

odbcDS <- RxOdbcData(sqlQuery = "SELECT * FROM airline",
                                connectionString=OdbcConnString,
                                stringsAsFactors=TRUE, 
                                useFastRead = TRUE,
                                rowsPerRead=150000)

xdfFile <- "airlineHWS.xdf"

if(file.exists(xdfFile)) file.remove(xdfFile)                       

Flights<-rxImport(odbcDS, outFile=xdfFile,overwrite=TRUE)

rxGetInfo(data="airlineHWS.xdf", getVarInfo=TRUE,numRows = 10)
lmyy7pcs

lmyy7pcs2#

陈伟的方法是可以的,但只有一个问题。数据作为odbcds对象中的Dataframe临时存储在内存中。如果我们 hive 里有一张大table,那我们就完了。
我建议在hive中使用外部表,然后在revolutionr中直接使用后端数据,从而将所有内容都保存在磁盘上。
这句话的意思是:
从现有配置单元表以文本文件(csv、tab等)格式创建外部表。
创建外部表ext\u table
就像你原来的表名一样
以','结尾的行格式分隔字段
位置'/your/hdfs/location';
在这里,我们创建的外部表存储在hdfs中作为csv文件。
接下来,使用insert overwrite命令将原始表复制到外部表。
插入覆盖表ext\u table从您的\u原始表\u名称中选择*
如果要检查hdfs类型上的后端数据:
hadoop fs-ls/your/hdfs/location/
我们可以看到存储在该位置的零件文件。去吧,摸摸它们,再确认一次
现在我们可以使用rxtdata函数从上面的步骤中读取数据
配置单元数据<-rxtextdata(file='/your/hdfs/location/',delimiter=',')
现在您可以使用hive\u data作为rxxdfdata中的infile参数来创建xdf文件,以便更有效地进行进一步处理,但最重要的是,数据从未接触过内存。

相关问题