我定义了以下函数:
def hdfsToSchemaRDD(hdfsPath, tableName, tableHeader):
lines = sc.textFile(hdfsPath)
fields = [StructField(field_name, StringType(), True) for field_name in tableHeader.split()]
schema = StructType(fields)
columns = lines.map(lambda l: l.split(","))
tempTable = columns.map(lambda c: tuple([ c[i] for i,v in enumerate(tableHeader.split()) ]))
schemaTable = sqlContext.applySchema(tempTable, schema)
schemaTable.registerTempTable(tableName)
sqlContext.cacheTable(tableName)
目的是从hdfs中读取数据集(给定路径),并将其存储到内存中,这样我就不必在每次需要查询数据集时都重新读取它,这通常是很常见的。在
我遇到的问题是,假设我加载一些大表LargeTable
并运行函数:
FeatureSummary(attribute1)
,FeatureSummary(attribute2)
,FeatureSummary(attribute3)
似乎每次都在读{FeatureSummary
函数中的查询将比LargeTable
的读入快得多。事实并非如此。在
有没有一种方法可以检查表是否已被缓存?
如何修改函数hdfsToSchemaRDD
以实际缓存hdfs中的数据?在
目前没有回答
相关问题 更多 >
编程相关推荐