我需要将配置单元表中的数据提取到csv文件中,并在revoscaler中使用它。目前,我们从配置单元中提取数据并手动将其放入一个文件中,然后在unix文件系统中使用它进行临时分析,然而,要求将结果直接重新定向到hdfs位置并从那里使用revoscaler?我该怎么做?或者我需要建立什么样的联系。
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)
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文件,以便更有效地进行进一步处理,但最重要的是,数据从未接触过内存。
2条答案
按热度按时间11dmarpk1#
如果我正确理解您的问题,您可以使用revoscaler odbc连接来导入配置单元表,并从中进行进一步的分析。
下面是使用hortonworks提供的odbc驱动程序的示例:
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文件,以便更有效地进行进一步处理,但最重要的是,数据从未接触过内存。