立即注册 登录
About云-梭伦科技 返回首页

nettman的个人空间 https://www.aboutyun.com/?21 [收藏] [复制] [分享] [RSS]

日志

Impala、Hive如何存储图片

已有 2569 次阅读2020-4-15 16:31 |系统分类:大数据

 我认为你有几种方法可以解决这个问题,具体取决于你的具体要求。  
 1.使用Hive  
 Hive允许您将二进制数据存储在Hive'数据库'中。 Hive与Impala类似,但通常较慢但功能更多。 您可以在表定义中使用DataType BINARY并使用LOAD DATA加载图像。 这样的东西可能有效(未经测试)。  
Create table images (picture binary); 
LOAD DATA LOCAL inpath 'x/y/image.jpg' INTO TABLE images;
 
 2.使用Impala  
 Impala 不允许二进制数据 。 你可以做的是使用序列化 - 反序列化方法。 这意味着您将图像转换为String格式,该格式仍包含将其转换回所需的所有信息。 一旦需要在HDFS上检索图像,就需要反序列化,这意味着将字符串转换为原始格式。  
 以Python为例,这将是这样的:  
import base64

def img_to_string(image_path):
    with open(image_path, "rb") as imageFile:
        image_string= base64.b64encode(imageFile.read())
        print image_string

def string_to_img(image_string):
    with open("new_image.png", "wb") as imageFile:
        imageFile.write(str.decode('base64'))
 
 3.仅使用HDFS  
 通常不需要将数据存储在数据库中。 你可以做的只是将图像放在HDFS中。 如有必要,您可以将HDFS文件路径保存在数据库中。 然后,您可以使用Impala查询检索路径。 从远程位置获取文件然后需要您运行以下( 此处有更多信息):  
ssh <user>@<host> "hadoop fs -get <hdfs_path> <os_path>"
then scp command to copy files

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条