如何从pandas HDFStore中检索特定列?我经常处理非常大的数据集,这些数据集太大而无法在内存中操作.我想迭代地读取一个csv文件,将每个块附加到HDFStore对象中,然后处理数据的子集.我已经阅读了一个简单的csv文件,并使用以下代码将其加载到HDFStore中:
tmp = pd.HDFStore('test.h5')
chunker = pd.read_csv('cars.csv', iterator=True, chunksize=10, names=['make','model','drop'])
tmp.append('df', pd.concat([chunk for chunk in chunker], ignore_index=True))
Run Code Online (Sandbox Code Playgroud)
并输出:
In [97]: tmp
Out[97]:
<class 'pandas.io.pytables.HDFStore'>
File path: test.h5
/df frame_table (typ->appendable,nrows->1930,indexers->[index])
Run Code Online (Sandbox Code Playgroud)
我的问题是如何从中访问特定列tmp['df']?该文档提到了一种select()方法和一些Term对象.提供的示例适用于小组数据; 然而,我太过新手,无法将其扩展到更简单的数据框案例.我的猜测是我必须以某种方式创建列的索引.谢谢!
我想使用Java API在HDFS中移动文件.我无法想办法做到这一点.FileSystem类似乎只允许允许移入和移出本地文件系统..但我想将它们保存在HDFS中并将它们移动到那里.
我错过了什么基本的东西?我可以想象的唯一方法是从输入流中读取它并将其写回...然后删除旧副本(yuck).
谢谢
在开发使用STORE命令的Pig脚本时,我必须删除每次运行的输出目录,否则脚本会停止并提供:
2012-06-19 19:22:49,680 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 6000: Output Location Validation Failed for: 'hdfs://[server]/user/[user]/foo/bar More info to follow:
Output directory hdfs://[server]/user/[user]/foo/bar already exists
Run Code Online (Sandbox Code Playgroud)
所以我正在寻找一个in-Pig解决方案来自动删除目录,如果目录在呼叫时不存在,那么该目录也不会阻塞.
在Pig Latin Reference中我找到了shell命令调用者fs.不幸的是,只要出现任何错误,Pig脚本就会中断.所以我不能用
fs -rmr foo/bar
Run Code Online (Sandbox Code Playgroud)
(即递归删除)因为如果目录不存在它会中断.我想我可以用一会儿
fs -test -e foo/bar
Run Code Online (Sandbox Code Playgroud)
这是一个测试,不应该打破或所以我想.但是,Pig再次将test不存在的目录上的返回代码解释为失败代码并中断.
Pig项目有一个JIRA票据解决了我的问题,并为STORE命令建议了一个可选参数OVERWRITE或FORCE_WRITE.无论如何,我正在使用Pig 0.8.1,并且没有这样的参数.
我有已经分组和聚合的数据,它看起来像这样:
user value count
---- -------- ------
Alice third 5
Alice first 11
Alice second 10
Alice fourth 2
...
Bob second 20
Bob third 18
Bob first 21
Bob fourth 8
...
Run Code Online (Sandbox Code Playgroud)
对于每个用户(Alice和Bob),我想要检索他们的前n个值(比方说2),排序的'count'项.所以我想要的输出是这样的:
Alice first 11
Alice second 10
Bob first 21
Bob second 20
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?
想象一下,我在HDFS托管的文件上做了一些Spark操作.像这样的东西:
var file = sc.textFile("hdfs://...")
val items = file.map(_.split('\t'))
...
Run Code Online (Sandbox Code Playgroud)
因为在Hadoop世界中,代码应该放在数据所在的位置,对吧?
所以我的问题是:Spark工作人员如何知道HDFS数据节点?Spark如何知道执行代码的数据节点?
我想在我的一个项目中使用镶木地板作为柱状存储.但我不想依赖于hadoop/hdfs库.是否可以在hdfs外使用镶木地板?或者什么是最小依赖?
嗨,我是hadoop的新手,并尝试在hdfs中创建名为twitter_data的目录.我在softlayer上设置了我的vm,成功安装并启动了hadoop.
这是我想要运行的表扬:
hdfs dfs -mkdir hdfs:// localhost:9000/user/Hadoop/twitter_data
并且它一直返回此错误消息:
/usr/local/hadoop/etc/hadoop/hadoop-env.sh: line 2: ./hadoop-env.sh: Permission denied
16/10/19 19:07:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
mkdir: `hdfs://localhost:9000/user/Hadoop/twitter_data': No such file or directory
Run Code Online (Sandbox Code Playgroud)
为什么说没有这样的文件和目录?我订购它制作目录,不应该只创建一个?我猜它一定是权限问题,但我无法解决它.请帮我hdfs专家.我花了太多时间在一件简单的事情上.
提前致谢.
我知道shell中的"getmerge"命令可以完成这项工作.
但是,如果我想在作业之后通过HDFS API for java合并这些输出,我该怎么办?
我真正想要的是HDFS上的单个合并文件.
我唯一能想到的就是在那之后再开始一份工作.
谢谢!
Hadoop权威指南说 -
每个Namenode都运行一个轻量级故障转移控制器进程,其工作是监视其Namenode的故障(使用简单的心跳机制),并在namenode失败时触发故障转移.
为什么namenode可以运行某些东西来检测自己的失败?
谁向谁发送心跳?
这个过程在哪里运行?
它如何检测namenode失败?
它向谁通知过渡?