草庐IT

外部化

全部标签

hadoop - 从 Apache Spark 查询外部配置单元中存在的表

这个问题在这里已经有了答案:HowtoconnectSparkSQLtoremoteHivemetastore(viathriftprotocol)withnohive-site.xml?(11个答案)关闭2年前。我对hadoop生态系统比较陌生。我的目标是使用ApacheSpark读取配置单元表并对其进行处理。Hive在EC2实例中运行。而Spark在我的本地机器上运行。为了制作原型(prototype),我按照here上的步骤安装了ApacheHadoop。.我也添加了所需的环境变量。我已经使用$HADOOP_HOME/sbin/start-dfs.sh启动了dfs我已经按照her

hadoop - Hive:修改外部表的位置需要太长时间

Hive有ManagedTables和ExternalTables两种表,区别可以查看Managed.VSExternalTables.目前,要将外部数据库从HDFS移动到Alluxio,我需要将外部表的位置修改为alluxio://。语句类似于:altertablecatalog_pagesetlocation"alluxio://node1:19998/user/root/tpcds/1000/catalog_returns"按照我的理解,应该是简单的metastore修改,但是对于一些表的修改,需要几十分钟。顺便说一句,数据库本身包含大约1TB的数据。我有什么办法可以加快表更改过

hadoop - 如何从本地磁盘而不是 HDFS 上的数据在 Hive 上创建外部表?

对于HDFS上的数据,我们可以做CREATEEXTERNALTABLE{idINT,nameSTRING,ageINT}LOCATION'hdfs_path';但是如何为上面的LOCATION指定本地路径呢?谢谢。 最佳答案 您可以先使用“hdfsdfs-put”将文件上传到HDFS,然后在其上创建Hive外部表。Hive无法在本地文件上创建外部表的原因是,当Hive处理数据时,实际处理发生在Hadoop集群上,您的本地文件可能根本无法访问。 关于hadoop-如何从本地磁盘而不是HDF

hadoop - 在 Hadoop 级联中从管道外部的管道获取字段值

关于上述主题,有没有办法从管道中获取字段的值。并在HadoopCascading的管道范围之外使用该值?数据的分隔符为“|”:first_name|descriptionBinod|nothingRohit|nothingRamesh|abc从上面的管道我需要从描述中获取一个值,无论是'nothing'还是'abc'. 最佳答案 HadoopCascading的开发理念是通过在管道之间流动数据并在Map-ReduceHadoop系统上并行执行来创建真实案例场景。java程序的执行不需要依赖于其余的级联流(从创建sourcetap到s

hadoop - Hive 外部表与内部表命令

假设我有这两个表:外部:createexternaltableemp_feedback(emp_idint,emp_namestring)LOCATION'/user/hive/warehouse/mydb.db/contacts';内部:createtableemp_feedback(emp_idint,emp_namestring)LOADDATAINPATH'file_location_of_csv'INTOTABLEemp_feedback;当我说:LOCATION'/user/hive/warehouse/mydb.db/contacts';对于外部表是否意味着该表的数据位于

python - 在 Hadoop MapReduce 脚本中导入外部库

我在Amazon的EMRHadoop实现之上运行PythonMapReduce脚本。作为主要脚本的结果,我得到了项目项目的相似性。在后续步骤中,我想将此输出拆分到每个项目的单独S3存储桶中,因此每个项目存储桶都包含与其类似的项目列表。为此,我想在善后步骤的reduce函数中使用亚马逊的botopython库。如何将外部(python)库导入hadoop,以便它们可以在用python编写的reduce步骤中使用?是否可以在Hadoop环境中以这种方式访问​​S3?提前致谢,托马斯 最佳答案 启动hadoop进程时,您可以指定应该可用的

hadoop - 删除配置单元分区的外部表但保留分区

使用外部配置单元表时,有没有一种方法可以删除目录中的数据,但通过查询保留分区。请注意我不想删除表并重新创建它。我只想清空底层文件夹并重新开始一个过程。我的表很大,按年、月、日和小时分区,手动重新创建分区需要很多时间。谢谢 最佳答案 truncatetable...删除所有数据。truncatetablepartition(...)删除特定分区的数据。保留目录结构。首先应该将外部表转换为管理表,例如altertabletsettblproperties('EXTERNAL'='FALSE');完成后,我们可以将其转换回来alterta

hadoop - 从 hadoop 外部访问 hdfs

我想使用存储在HDFS中的输入文件在hadoop之外(但在同一集群上)运行一些可执行文件。这些文件需要复制到节点本地吗?或者有没有办法在hadoop之外访问HDFS?有关如何执行此操作的任何其他建议都很好。不幸的是,我的可执行文件不能在hadoop中运行。谢谢! 最佳答案 有几种典型的方法:您可以通过HDFSJavaAPI访问HDFS文件如果您正在用Java编写程序。您可能正在寻找open.这将为您提供一个类似于通用打开文件的流。如果您的程序通过标准输入获取输入,您可以使用hadoopcat流式传输数据:hadoopfs-cat/p

hadoop - 删除托管(非外部)表时,不会删除 hdfs 上的配置单元文件

当我从Hive交互式命令行删除托管表时,在/user/hive/warehouse/.db中的hdfs上创建的基础文件仍然存在。当我重新创建具有相同名称的表并尝试执行此操作时,这会导致问题INSERTINTOTABLE因为它仍然包含我在最初运行时加载到这些分区(在我的例子中是dt和hr分区)的数据。只有当我使用INSERTOVERWRITETABLE它最终会正确加载数据吗,但我的ETL需要使用INSERTINTOTABLE.有什么想法吗?我正准备创建同一个表但名称不同,或者只是进入并删除hdfs上的内容,但我担心这是否会破坏Metastore或其他东西。最后,我确信它是一个托管表而不是

hadoop - 使用分区创建外部

我在hadoop中有数据并使用分区(日期和小时)创建了一个外部表。表创建很好,但是当我尝试查询数据时,我没有得到任何结果。Hadoop文件路径->/test/dt=2012-01-30/hr=17/testdata*创建语句->CREATEEXTERNALTABLEtest(adateSTRING,remoteIpSTRING,urlSTRING,typeSTRING,ipSTRING,useragentSTRING)COMMENT'ThisistheTestviewtable'PARTITIONEDBY(dtSTRING,hrSTRING)ROWFORMATSERDE'com.tes