我有大约400个CSV文件。我想在这些CSV文件上创建一个Hive表,但只包含列的某个子集(见下文)。我知道我可以创建一个包含所有这些表的表,然后使用select语句只获取我想要的表并制作第二个hive表但是我想知道是否有一种方法可以避免这样做。
这是我的专栏:
columns = ['time', 'Var2', 'Var3', 'Var4', 'Var5', 'Var6', 'Var7', 'I0', 'I1',
'I2', 'V0', 'V1', 'V2', 'fpa', 'fpb', 'fpc', 'fpg', 'filename',
'record_time_stamp', 'fault', 'unix_time', 'Var2_real', 'Var2_imag',
'Var3_real', 'Var3_imag', 'Var4_real', 'Var4_imag', 'Var5_real',
'Var5_imag', 'Var6_real', 'Var6_imag', 'Var7_real', 'Var7_imag',
'I0_real', 'I0_imag', 'I1_real', 'I1_imag', 'I2_real', 'I2_imag',
'V0_real', 'V0_imag', 'V1_real', 'V1_imag', 'V2_real', 'V2_imag']
我不想在Hive表中找到这些:
['Var2', 'Var3', 'Var4', 'Var5', 'Var6', 'Var7', 'I0', 'I1','I2', 'V0', 'V1', 'V2']
我知道我可以在CSV中更改我的数据或使用2个Hive表,但我不想改变我的数据(因为另一个团队将使用这些列进行工作)而且我不会为了保持整洁,我想制作另一张桌子。这可能吗?
答案 0 :(得分:0)
如果可以使用Spark,建议您从CSV文件中读取数据,为所需的列创建数据模型,然后在应用程序提取的RDD上强制实施该数据模型以创建数据框。 此后,使用.saveAsTable()保存数据框,您应该在Hive数据库中看到它。
在如此范围内处理数据是Spark而非Hive的任务。