Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于科学数据分析的Python流媒体_Python_Hadoop_Streaming_Analysis - Fatal编程技术网

用于科学数据分析的Python流媒体

用于科学数据分析的Python流媒体,python,hadoop,streaming,analysis,Python,Hadoop,Streaming,Analysis,我刚开始在笔记本电脑上的一个单节点集群上使用hadoop,我尝试用Python来实现它,我比Java更了解Python。显然,流式传输是最简单的方法,无需安装任何其他软件包 我的问题是,当我用流媒体做一些数据分析时,我必须: 将我的数据(矩阵、数组…)转换为适合流式处理的默认输入文件格式的文本文件 在my mapper.py中重新构造数据,以显式生成(键、值)对并将其打印出来 阅读文本格式的结果,然后转换成矩阵数据,这样我就可以用它们做其他事情 当您使用文本文件作为输入进行字数统计时,一切看起来

我刚开始在笔记本电脑上的一个单节点集群上使用hadoop,我尝试用Python来实现它,我比Java更了解Python。显然,流式传输是最简单的方法,无需安装任何其他软件包

我的问题是,当我用流媒体做一些数据分析时,我必须:

  • 将我的数据(矩阵、数组…)转换为适合流式处理的默认输入文件格式的文本文件
  • 在my mapper.py中重新构造数据,以显式生成(键、值)对并将其打印出来
  • 阅读文本格式的结果,然后转换成矩阵数据,这样我就可以用它们做其他事情

  • 当您使用文本文件作为输入进行字数统计时,一切看起来都很好。但是如何处理流媒体中的数据结构呢?我这样做似乎是不可接受的…

    对于python和hadoop,请查找
    MRjob

    您可以编写ouwn编码解码协议,将流媒体矩阵行作为rownum值对,或将每个元素作为row:col值对,等等


    无论哪种方式,hadoop都不是用于矩阵运算的最佳框架,因为它是为大量不相关的数据而设计的,也就是说,当键值处理不依赖于其他值或以非常有限的方式依赖时。

    使用json作为文本格式可以非常方便地进行编码和解码

    例如,hdfs上的4*4标识矩阵可以存储为:

    {"row":3, "values":[0,0,1,0]}
    {"row":2, "values":[0,1,0,0]}
    {"row":4, "values":[0,0,0,1]}
    {"row":1, "values":[1,0,0,0]}
    
    在映射程序中,使用json库中的
    json.loads()
    将每一行解析到python字典中,这非常容易操作。然后返回一个键,后跟更多json(使用
    json.dumps()
    将python对象编码为json):


    在reducer中,对值使用
    json.loads()
    ,以创建python字典。例如,这些可以很容易地转换成numpy阵列。

    我在虚拟机中使用了cloudera quickstart包。我不确定我是否能够在Hadoop中安装其他软件包(我尝试了Pydoop,但没有成功),但我以后一定会尝试Mrjob。谢谢使用json非常理想。我试试看!谢谢要将问题标记为已解决,您必须单击所选答案旁边的绿色勾号。在问题或标题中编辑“已解决”一词并不能解决问题。请点击那个勾号。
    1    {"values":[1,0,0,0]}
    2    {"values":[0,1,0,0]}
    3    {"values":[0,0,1,0]}
    4    {"values":[0,0,0,1]}