code: def copyHdfsFileToLocal(
      hdfsFilePath, localFilePath, hdfsClient, override=True
  ):
      """Copy file from HDFS to local"""
      if not hdfsClient.exists(hdfsFilePath):
          raise Exception(
              "HDFS file {} does not exist!".format(hdfsFilePath)
          )
      try:
          file_status = hdfsClient.get_file_status(hdfsFilePath)
          if file_status.type != "FILE":
              raise Exception(
                  "HDFS file path {} is not a file".format(hdfsFilePath)
              )
      except Exception as exception:
          nni_log(
              LogType.Error,
              "Get hdfs file {0} status error: {1}".format(
                  hdfsFilePath, str(exception)
              ),
          )
          raise exception
  
      if os.path.exists(localFilePath) and override:
          os.remove(localFilePath)
      try:
          hdfsClient.copy_to_local(hdfsFilePath, localFilePath)
      except Exception as exception:
          nni_log(
              LogType.Error,
              "Copy hdfs file {0} to {1} error: {2}".format(
                  hdfsFilePath, localFilePath, str(exception)
              ),
          )
          raise exception
      nni_log(
          LogType.Info,
          "Successfully copied hdfs file {0} to {1}, {2} bytes".format(
              hdfsFilePath, localFilePath, file_status.length
          ),
      )
  
imports: import os
  import posixpath
  from .log_utils import LogType, nni_log
label_desc: Use image node_id 2 for calling a global function with example usage: copyHdfsFileToLocal(hdfsFilePath, localFilePath, hdfsClient, override) without return types