天道酬勤,学无止境

bigdata

如何将多个 xls 文件中的 xls 数据加载到 hive 中?(How to load xls data from multiple xls file into hive?)

问题 我正在学习使用 Hadoop 来执行与大数据相关的操作。 我需要对跨 8 个 xls 文件的一组数据集执行一些查询。 每个 xls 文件都有多个工作表,并且查询仅涉及其中一个工作表。 数据集可以在这里下载:http://www.census.gov/hhes/www/hlthins/data/utilization/tables.html 我没有使用任何商业发行版的 hadoop 来完成我的任务,只是在 VmWare 中设置了一个主虚拟机和一个从虚拟机,其中包含 Hadoop、Hive、Pig。 我是 Hadoop 和大数据的新手,所以如果有人能指导我如何进一步进行,我将非常感激。 如果您需要有关查询或其他任何信息的信息,请告诉我。 谢谢。 回答1 在 hive 中,您不能像处理 txt 或 csv 文件那样直接从 xls 将数据加载到表中。 您有两个选择: 编写一个应用程序(例如,Java)来读取 xls 文件并将它们转换为可以直接加载到 hive 中的文本或 csv 文件。 或者 您可以创建您自己的 serde(序列化程序或反序列化程序),您可以使用它来解析要加载到表中的 xls 数据。 两者都有其优点和缺点,但是如果您打算使用与 HIVE 交互的应用程序进行加载、查询、转换等。您可以使用选项 1。但是,如果您打算通过脚本/批处理等进行操作,您可以使用选项2.

2021-09-19 19:10:20    分类:技术分享    hadoop   hive   bigdata

大型数据集上的 Sklearn-GMM(Sklearn-GMM on large datasets)

问题 我有一个很大的数据集(我无法将整个数据放在内存中)。 我想在这个数据集上拟合一个 GMM。 我可以在小批量数据上重复使用GMM.fit() ( sklearn.mixture.GMM ) 吗?? 回答1 没有理由重复安装它。 只需随机采样您认为您的机器可以在合理时间内计算的尽可能多的数据点。 如果变异不是很大,随机样本的分布将与完整数据集大致相同。 randomly_sampled = np.random.choice(full_dataset, size=10000, replace=False) #If data does not fit in memory you can find a way to randomly sample when you read it GMM.fit(randomly_sampled) 和使用 GMM.predict(full_dataset) # Again you can fit one by one or batch by batch if you cannot read it in memory 其余的对它们进行分类。 回答2 fit总是会忘记 scikit-learn 中以前的数据。 对于增量拟合,有partial_fit函数。 不幸的是, GMM还没有partial_fit (还),所以你不能这样做。 回答3

2021-09-19 06:29:02    分类:技术分享    python   scikit-learn   bigdata   mixture-model

如何使用MongoDB查找不在另一个集合中的集合中的项目(How to find items in a collections which are not in another collection with MongoDB)

问题 我想查询我的 mongodb 以在 2 个集合之间执行不匹配。 这是我的结构: 集合A : _id, name, firstname, website_account_key, email, status 集合B : _id, website_account_key, lifestage, category, target, flag_sistirt 我正在尝试在 B 中查找项目,为此,A 中没有行(website_account_key 是唯一的,并且允许为每个 A [一对一] 在 B 中查找元素) 我试图做: dataA_ids = db.dataA.find().map(function(a){return a.website_account_key;}) db.dataB.find( { website_account_key: { $nin: [dataA_ids] } } ) 但我什么都没有,除非,我添加了一些应该可以工作的测试数据:( 这是我的测试的完整代码: db.products.insert( { item: "card", qty: 15, code:100 } ) db.products.insert( { item: "pass", qty: 15, code:230 } ) db.products.insert( { item: "badge"

2021-09-19 05:56:42    分类:技术分享    mongodb   mongodb-query   bigdata   database

无法为任务尝试释放 NNN 的容器(Could not deallocate container for task attemptId NNN)

问题 我试图了解容器如何根据不同的硬件配置在 YARN 中分配内存及其性能。 所以,这台机器有 30 GB 的 RAM,我为 YARN 选择了 24 GB,为系统保留了 6 GB。 yarn.nodemanager.resource.memory-mb=24576 然后我按照 http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.6.0/bk_installing_manually_book/content/rpm-chap1-11.html 提出了一些用于 Map & Reduce 任务内存的值。 我将这两个保留为默认值: mapreduce.map.memory.mb mapreduce.map.java.opts 但我改变了这两个配置: mapreduce.reduce.memory.mb=20480 mapreduce.reduce.java.opts=Xmx16384m 但是,当我使用该设置放置工作时,出现错误并且该工作被强行杀死: 2015-03-10 17:18:18,019 ERROR [Thread-51] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Could not deallocate container for task

2021-09-19 00:27:27    分类:技术分享    hadoop   memory   mapreduce   bigdata   yarn

dcast 有效地处理具有多个变量的大型数据集(dcast efficiently large datasets with multiple variables)

问题 我正在尝试dcast一个大型数据集(数百万行)。 我有一行是到达时间和出发地,另一行是出发时间和目的地。 在这两种情况下都有一个id来标识单元。 它看起来类似于: id time movement origin dest 1 10/06/2011 15:54 ARR 15 15 1 10/06/2011 16:14 DEP 15 29 2 10/06/2011 17:59 ARR 73 73 2 10/06/2011 18:10 DEP 73 75 2 10/06/2011 21:10 ARR 75 75 2 10/06/2011 21:20 DEP 75 73 3 10/06/2011 17:14 ARR 17 17 3 10/06/2011 18:01 DEP 17 48 4 10/06/2011 17:14 ARR 49 49 4 10/06/2011 17:26 DEP 49 15 因此,我想重新分配对( ARR - DEP )并有效地执行此操作(如此处)。 由于它是一个非常大的数据集for loop因此在这种情况下for loop不起作用。 理想的输出是 index unitid origin arr time dest dep time 1 1 15 10/06/2011 14:33 29 10/06/2011 19:24 2 2 73 10/06/2011 14

2021-09-16 15:47:00    分类:技术分享    r   reshape2   large-data   bigdata

R,多重对应分析后的分层聚类问题(R, issue with a Hierarchical clustering after a Multiple correspondence analysis)

问题 我想对数据集(600000 个观测值)进行聚类,并且对于每个聚类,我想获取主要成分。 我的向量由一封电子邮件和 30 个定性变量组成。 每个定量变量有 4 个类别:0、1、2 和 3。 所以我要做的第一件事是加载库 FactoMineR 并加载我的数据: library(FactoMineR) mydata = read.csv("/home/tom/Desktop/ACM/acm.csv") 然后我将我的变量设置为定性(尽管我不包括变量“电子邮件”): for(n in 1:length(mydata)){mydata[[n]] <- factor(mydata[[n]])} 我正在从我的向量中删除电子邮件: mydata2 = mydata[2:31] 我正在这个新数据集中运行 MCA: mca.res <- MCA(mydata2) 我现在想使用 hcpc 函数对我的数据集进行聚类: res.hcpc <- HCPC(mca.res) 但我收到以下错误消息: Error: cannot allocate vector of size 1296.0 Gb 你觉得我应该怎么做? 我的数据集太大了吗? 我是否很好地使用了 hcpc 功能? 回答1 由于它使用层次聚类, HCPC需要计算 600000 x 600000 距离矩阵(约 1800 亿个元素)的下三角。 您根本没有

2021-09-16 05:01:09    分类:技术分享    r   bigdata   cluster-computing

Apache Sqoop 和 Flume 可以互换使用吗?(Can Apache Sqoop and Flume be used interchangeably?)

问题 我是大数据的新手。 从Flume 和Sqoop 有什么区别?的一些回答来看,Flume 和Sqoop 都可以从source 拉取数据,然后push 到Hadoop。 任何人都可以指定使用水槽的地方和使用 sqoop 的地方吗? 两者可以用于相同的任务吗? 回答1 Flume 和 Sqoop 都旨在处理不同类型的数据源。 Sqoop 适用于任何支持 JDBC 连接的 RDBMS 系统。 另一方面,Flume 可以很好地处理流数据源,例如在您的环境中连续生成的日志数据。 具体来说, Sqoop 可用于向 RDBMS 系统(如 Oracle、MS SQL Server、MySQL、PostgreSQL、Netezza、Teradata 和其他一些支持 JDBC 连接的系统)导入/导出数据。 Flume 可用于从像下面这样的源摄取高吞吐量数据并插入到下面的目的地(接收器)中。 常用的水槽源: 假脱机目录 - 在其中创建大量文件的目录,主要用于收集和聚合日志数据 JMS - 从基于 JMS 的系统收集指标还有更多常用的水槽: 高密度文件系统 HBase 索尔弹性搜索还有更多 不,这两种工具不能用于完成相同的任务,例如,flume 不能用于数据库,sqoop 不能用于流数据源或平面文件。 如果您有兴趣,flume 也有一个替代品,它与 chukwa 做同样的事情。

2021-09-16 02:26:04    分类:技术分享    hadoop   bigdata   sqoop   flume

Apache Sqoop 和 Flume 可以互换使用吗?(Can Apache Sqoop and Flume be used interchangeably?)

问题 我是大数据的新手。 从Flume 和Sqoop 有什么区别?的一些回答来看,Flume 和Sqoop 都可以从source 拉取数据,然后push 到Hadoop。 任何人都可以指定使用水槽的地方和使用 sqoop 的地方吗? 两者可以用于相同的任务吗? 回答1 Flume 和 Sqoop 都旨在处理不同类型的数据源。 Sqoop 适用于任何支持 JDBC 连接的 RDBMS 系统。 另一方面,Flume 可以很好地处理流数据源,例如在您的环境中连续生成的日志数据。 具体来说, Sqoop 可用于向 RDBMS 系统(如 Oracle、MS SQL Server、MySQL、PostgreSQL、Netezza、Teradata 和其他一些支持 JDBC 连接的系统)导入/导出数据。 Flume 可用于从像下面这样的源摄取高吞吐量数据并插入到下面的目的地(接收器)中。 常用的水槽源: 假脱机目录 - 在其中创建大量文件的目录,主要用于收集和聚合日志数据 JMS - 从基于 JMS 的系统收集指标还有更多常用的水槽: 高密度文件系统 HBase 索尔弹性搜索还有更多 不,这两种工具不能用于完成相同的任务,例如,flume 不能用于数据库,sqoop 不能用于流数据源或平面文件。 如果您有兴趣,flume 也有一个替代品,它与 chukwa 做同样的事情。

2021-09-16 02:24:25    分类:技术分享    hadoop   bigdata   sqoop   flume

将巨大的 .dat 加载到数组中的最快方法(Fastest way to load huge .dat into array)

问题 我在 stackexchange 中广泛搜索了一个巧妙的解决方案,用于将一个巨大的(~2GB).dat 文件加载到一个 numpy 数组中,但没有找到合适的解决方案。 到目前为止,我设法以非常快的方式(<1 分钟)将它作为列表加载: list=[] f = open('myhugefile0') for line in f: list.append(line) f.close() 使用 np.loadtxt 会冻结我的计算机并需要几分钟才能加载(约 10 分钟)。 如何在没有似乎瓶颈 np.loadtxt 的分配问题的情况下将文件作为数组打开? 编辑: 输入数据是一个浮点数 (200000,5181) 数组。 一行示例: 2.27069e-15 2.40985e-15 2.22525e-15 2.1138e-15 1.92038e-15 1.54218e-15 1.30739e-15 1.09205e-15 8.53416e-16 7.71566e-16 7.58353e-16 7.58362e-16 8.81664e -16 1.09204e-15 1.27305e-15 1.58008e-15 等等 谢谢 回答1 查看源代码,似乎numpy.loadtxt包含大量代码来处理许多不同的格式。 如果您有一个定义良好的输入文件,那么编写针对您的特定文件格式优化的自己的函数并不难

2021-09-14 22:28:10    分类:技术分享    python   numpy   bigdata

Google BigQuery 查询很慢(Google BigQuery queries are slow)

问题 我正在使用 Google BigQuery,并且正在从 PHP 执行一些简单的查询。 (例如 SELECT * from emails WHERE email='mail@test.com')我只是检查表格中是否存在电子邮件。 表“电子邮件”现在是空的。 但是 PHP 脚本仍然需要大约 4 分钟才能在一个空表上检查 175 封电子邮件..正如我希望将来表将被填满并且将有 500 000 封邮件然后我猜请求时间会更长。 这是正常的吗? 或者有什么想法/解决方案可以改善检查时间? (PS:“emails”表只有8列,都是字符串类型) 谢谢 ! 回答1 如果您只是检查字段是否存在,请考虑使用SELECT COUNT(*) FROM emails where email='mail@test.com'代替。 这将只需要读取单个字段,因此在大表上成本更低,速度稍快。 正如 Pentium10 建议的那样,考虑在单个查询中使用多个查找。 你可以这样做: SELECT SUM((IF(email = 'mail1@test.com', 1, 0)) as m1, SUM((IF(email = 'mail2@test.com', 1, 0)) as m2, SUM((IF(email = 'mail3@test.com', 1, 0)) as m3, ... FROM emails

2021-09-14 18:54:32    分类:技术分享    php   sql   google-app-engine   bigdata   google-bigquery